软件研发 --- hello world 项目 之 js重生 node.js
Node.js 安装运行完整指南
目录
Node.js 简介
Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境。它让 JavaScript 能够在服务器端运行,用于构建高性能的网络应用程序。
Node.js 的特点
- 事件驱动:基于事件循环的非阻塞 I/O 模型
- 单线程:主线程是单线程,但通过事件循环实现高并发
- 跨平台:支持 Windows、macOS、Linux 等操作系统
- 丰富的生态系统:拥有世界上最大的开源库生态系统 npm
- 高性能:V8 引擎提供出色的执行性能
- 实时应用:特别适合构建实时 Web 应用
安装 Node.js
方法一:官方网站下载(推荐)
-
访问官方网站
- 打开浏览器,访问:https://nodejs.org/
- 选择 LTS(长期支持)版本,更加稳定
-
下载安装包
- Windows:下载
.msi安装包 - macOS:下载
.pkg安装包 - Linux:下载二进制包或使用包管理器
- Windows:下载
-
安装过程
- Windows/macOS:双击安装包,按照向导完成安装
- 安装过程中会自动配置环境变量
- npm(Node Package Manager)会一同安装
方法二:使用包管理器安装
Windows(使用 Chocolatey)
# 安装 Chocolatey(如果未安装)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 使用 Chocolatey 安装 Node.js
choco install nodejs
macOS(使用 Homebrew)
# 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 使用 Homebrew 安装 Node.js
brew install node
Linux(Ubuntu/Debian)
# 更新包列表
sudo apt update
# 安装 Node.js 和 npm
sudo apt install nodejs npm
# 或者安装最新版本
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
方法三:使用版本管理器(推荐开发者)
安装 nvm(Node Version Manager)
Windows(nvm-windows):
- 下载:https://github.com/coreybutler/nvm-windows/releases
- 安装
nvm-setup.zip
macOS/Linux:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
使用 nvm 安装 Node.js
# 查看可用版本
nvm list available # Windows
nvm ls-remote # macOS/Linux
# 安装最新 LTS 版本
nvm install --lts
# 使用特定版本
nvm use 18.17.0
# 设置默认版本
nvm alias default 18.17.0
验证安装
安装完成后,打开命令行工具验证安装:
# 检查 Node.js 版本
node --version
# 或者
node -v
# 检查 npm 版本
npm --version
# 或者
npm -v
预期输出示例:
C:\> node --version
v18.17.0
C:\> npm --version
9.6.7
运行 Hello World 程序
hello.js
// Node.js Hello World 程序 // Node.js是一个基于Chrome V8引擎的JavaScript运行时环境 // 它允许JavaScript在服务器端运行,用于构建高性能的网络应用程序 // 在Node.js中,console是一个全局对象,用于输出信息到控制台 // console.log()方法用于输出文本,类似于浏览器中的console.log() console.log('Hello, World!'); // 输出Node.js相关信息 console.log('欢迎使用Node.js!'); console.log('Node.js版本:', process.version); console.log('当前平台:', process.platform); // process是Node.js的全局对象,包含当前进程的信息 // process.version 显示当前Node.js版本 // process.platform 显示当前操作系统平台 // 演示Node.js的一些基本特性 // 1. 变量声明和使用 const message = 'Node.js让JavaScript运行在服务器端!'; let currentTime = new Date(); var author = 'Node.js开发者'; console.log('\n=== 变量演示 ==='); console.log('消息:', message); console.log('当前时间:', currentTime.toLocaleString()); console.log('作者:', author); // 2. 函数定义和调用 function greetUser(name) { return `你好, ${name}! 欢迎学习Node.js!`; } // 箭头函数(ES6特性) const calculateSum = (a, b) => { return a + b; }; console.log('\n=== 函数演示 ==='); console.log(greetUser('开发者')); console.log('计算结果 5 + 3 =', calculateSum(5, 3)); // 3. 数组和对象操作 const technologies = ['JavaScript', 'Node.js', 'Express.js', 'MongoDB']; const projectInfo = { name: 'Hello World项目', language: 'JavaScript', runtime: 'Node.js', difficulty: '初级' }; console.log('\n=== 数据结构演示 ==='); console.log('技术栈:', technologies.join(', ')); console.log('项目信息:', JSON.stringify(projectInfo, null, 2)); // 4. 异步编程示例(使用setTimeout) console.log('\n=== 异步编程演示 ==='); console.log('开始异步操作...'); setTimeout(() => { console.log('异步操作完成!这是在1秒后执行的代码。'); }, 1000); // 5. 模块系统演示(内置模块) const os = require('os'); // 引入操作系统模块 const path = require('path'); // 引入路径处理模块 console.log('\n=== 模块系统演示 ==='); console.log('操作系统类型:', os.type()); console.log('系统架构:', os.arch()); console.log('当前文件路径:', __filename); console.log('当前目录:', __dirname); console.log('文件扩展名:', path.extname(__filename)); // 程序结束提示 console.log('\n=== 程序执行完成 ==='); console.log('恭喜!你已经成功运行了第一个Node.js程序!'); // 注意:在Node.js中,程序会在所有同步代码执行完毕后自动退出 // 除非有异步操作(如setTimeout、服务器监听等)保持程序运行
方法一:直接运行
-
打开命令行
- Windows:按
Win + R,输入cmd或powershell - macOS:按
Cmd + Space,搜索 "Terminal" - Linux:按
Ctrl + Alt + T
- Windows:按
-
导航到文件目录
cd "C:\Users\21558\Documents\WeChat Files\wxid_nwercn4twf1c22\FileStorage\File\2025-06\cxx" -
运行程序
node hello.js
方法二:使用 npm scripts
-
创建 package.json 文件
npm init -y -
编辑 package.json,添加脚本
{ "name": "hello-world", "version": "1.0.0", "description": "Node.js Hello World 示例", "main": "hello.js", "scripts": { "start": "node hello.js", "dev": "node hello.js" }, "keywords": ["nodejs", "hello-world"], "author": "你的名字", "license": "MIT" } -
使用 npm 运行
npm start # 或者 npm run dev
Node.js 程序结构详解
基本语法
// 1. 注释
// 单行注释
/* 多行注释 */
// 2. 变量声明
const PI = 3.14159; // 常量,不可修改
let userName = 'Alice'; // 块级作用域变量
var age = 25; // 函数作用域变量(不推荐)
// 3. 数据类型
let number = 42; // 数字
let string = 'Hello World'; // 字符串
let boolean = true; // 布尔值
let array = [1, 2, 3]; // 数组
let object = { name: 'John' }; // 对象
let nullValue = null; // 空值
let undefinedValue = undefined; // 未定义
// 4. 函数
function greet(name) {
return `Hello, ${name}!`;
}
// 箭头函数(ES6)
const add = (a, b) => a + b;
// 5. 模块系统
const fs = require('fs'); // 引入内置模块
const express = require('express'); // 引入第三方模块
内置对象和模块
// 全局对象
console.log('输出信息');
process.exit(0); // 退出程序
__filename; // 当前文件路径
__dirname; // 当前目录路径
// 常用内置模块
const fs = require('fs'); // 文件系统
const path = require('path'); // 路径处理
const http = require('http'); // HTTP 服务器
const url = require('url'); // URL 解析
const os = require('os'); // 操作系统信息
异步编程
// 1. 回调函数
setTimeout(() => {
console.log('1秒后执行');
}, 1000);
// 2. Promise
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('操作成功');
}, 1000);
});
promise.then(result => {
console.log(result);
});
// 3. async/await(ES2017)
async function fetchData() {
try {
const result = await promise;
console.log(result);
} catch (error) {
console.error(error);
}
}
包管理器 npm
npm 基本命令
# 初始化项目
npm init # 交互式创建 package.json
npm init -y # 使用默认设置创建
# 安装包
npm install express # 安装到 dependencies
npm install --save express # 同上(默认行为)
npm install --save-dev jest # 安装到 devDependencies
npm install -g nodemon # 全局安装
# 卸载包
npm uninstall express # 卸载包
npm uninstall -g nodemon # 卸载全局包
# 更新包
npm update # 更新所有包
npm update express # 更新特定包
# 查看信息
npm list # 查看已安装的包
npm list -g # 查看全局安装的包
npm info express # 查看包信息
package.json 详解
{
"name": "my-app",
"version": "1.0.0",
"description": "我的 Node.js 应用",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest",
"build": "webpack"
},
"dependencies": {
"express": "^4.18.0"
},
"devDependencies": {
"nodemon": "^2.0.0",
"jest": "^29.0.0"
},
"keywords": ["nodejs", "express"],
"author": "你的名字",
"license": "MIT"
}
常用开发工具包
# 开发工具
npm install -g nodemon # 自动重启开发服务器
npm install -g pm2 # 生产环境进程管理
npm install -g typescript # TypeScript 编译器
# Web 框架
npm install express # 轻量级 Web 框架
npm install koa # 下一代 Web 框架
npm install fastify # 高性能 Web 框架
# 数据库
npm install mongoose # MongoDB ODM
npm install sequelize # SQL ORM
npm install redis # Redis 客户端
# 工具库
npm install lodash # 实用工具库
npm install moment # 日期处理
npm install axios # HTTP 客户端
npm install dotenv # 环境变量管理
常见问题解决
1. 权限问题
问题:npm 安装包时提示权限不足
解决方案:
# Windows(以管理员身份运行命令行)
# macOS/Linux
sudo npm install -g package-name
# 或者配置 npm 全局目录
npm config set prefix ~/.npm-global
export PATH=~/.npm-global/bin:$PATH
2. 网络问题
问题:npm 安装速度慢或失败
解决方案:
# 使用淘宝镜像
npm config set registry https://registry.npmmirror.com
# 或者使用 cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm install express
# 恢复官方镜像
npm config set registry https://registry.npmjs.org
3. 版本冲突
问题:不同项目需要不同 Node.js 版本
解决方案:使用 nvm 管理版本
# 安装多个版本
nvm install 16.20.0
nvm install 18.17.0
# 切换版本
nvm use 16.20.0
# 查看当前版本
nvm current
4. 模块找不到
问题:Error: Cannot find module 'xxx'
解决方案:
# 重新安装依赖
rm -rf node_modules package-lock.json
npm install
# 或者清除 npm 缓存
npm cache clean --force
5. 端口占用
问题:Error: listen EADDRINUSE :::3000
解决方案:
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F
# macOS/Linux
lsof -ti:3000 | xargs kill -9
开发工具推荐
1. 代码编辑器
Visual Studio Code(推荐)
- 免费、开源、功能强大
- 丰富的 Node.js 扩展
- 内置调试器和终端
- 智能代码补全
推荐扩展:
- Node.js Extension Pack
- ESLint
- Prettier
- Auto Rename Tag
- GitLens
WebStorm
- JetBrains 出品的专业 IDE
- 强大的调试和重构功能
- 内置版本控制
- 付费软件
Sublime Text
- 轻量级、启动快速
- 丰富的插件生态
- 多光标编辑
2. 调试工具
# 使用 Node.js 内置调试器
node --inspect hello.js
# 使用 Chrome DevTools
# 在 Chrome 中访问:chrome://inspect
# 使用 VS Code 调试
# 创建 .vscode/launch.json 配置文件
3. 开发服务器
# nodemon - 自动重启
npm install -g nodemon
nodemon hello.js
# pm2 - 生产环境进程管理
npm install -g pm2
pm2 start hello.js
pm2 list
pm2 stop hello.js
进阶学习建议
1. 学习路径
基础阶段:
- JavaScript 基础语法
- Node.js 核心模块
- npm 包管理
- 异步编程(回调、Promise、async/await)
进阶阶段:
- Express.js 框架
- 数据库操作(MongoDB、MySQL)
- RESTful API 设计
- 身份验证和授权
高级阶段:
- 微服务架构
- 性能优化
- 安全最佳实践
- 部署和运维
2. 实践项目
初级项目:
- 命令行工具
- 文件处理脚本
- 简单的 HTTP 服务器
中级项目:
- RESTful API
- 实时聊天应用
- 博客系统
高级项目:
- 电商平台
- 社交网络
- 微服务架构应用
3. 学习资源
官方文档:
- Node.js 官方文档:https://nodejs.org/docs/
- npm 官方文档:https://docs.npmjs.com/
在线教程:
- Node.js 教程 - 菜鸟教程
- freeCodeCamp Node.js 课程
- Node.js 实战 - 慕课网
书籍推荐:
- 《Node.js 实战》
- 《深入浅出 Node.js》
- 《Node.js 设计模式》
与其他语言对比
Node.js vs Java
| 特性 | Node.js | Java |
|---|---|---|
| 语言 | JavaScript | Java |
| 运行时 | V8 引擎 | JVM |
| 并发模型 | 事件循环 | 多线程 |
| 开发速度 | 快速 | 中等 |
| 性能 | 高(I/O密集) | 高(CPU密集) |
| 生态系统 | npm(丰富) | Maven/Gradle |
| 学习曲线 | 平缓 | 陡峭 |
Node.js vs Python
| 特性 | Node.js | Python |
|---|---|---|
| 语法 | JavaScript | Python |
| 执行方式 | 编译+解释 | 解释执行 |
| 异步编程 | 原生支持 | 需要库支持 |
| Web开发 | Express等 | Django/Flask |
| 数据科学 | 有限 | 强大 |
| 实时应用 | 优秀 | 一般 |
Node.js vs Go
| 特性 | Node.js | Go |
|---|---|---|
| 类型系统 | 动态类型 | 静态类型 |
| 并发 | 事件循环 | Goroutines |
| 编译 | 运行时编译 | 编译型 |
| 部署 | 需要运行时 | 单文件部署 |
| 开发效率 | 高 | 中等 |
| 性能 | 高 | 非常高 |
Node.js vs C#
| 特性 | Node.js | C# |
|---|---|---|
| 平台 | 跨平台 | 跨平台(.NET Core) |
| 类型系统 | 动态类型 | 静态类型 |
| 生态系统 | npm | NuGet |
| 企业支持 | 社区驱动 | Microsoft支持 |
| 开发工具 | 多样化 | Visual Studio |
| 学习资源 | 丰富 | 丰富 |
总结
Node.js 是一个强大的 JavaScript 运行时环境,特别适合构建:
- 实时应用:聊天应用、在线游戏、协作工具
- API 服务:RESTful API、GraphQL 服务
- 微服务:轻量级、高性能的微服务
- 工具和脚本:构建工具、自动化脚本
- 单页应用后端:为 React、Vue、Angular 提供后端支持
Node.js 的优势
- 统一的开发语言:前后端都使用 JavaScript
- 高性能:事件驱动、非阻塞 I/O
- 丰富的生态系统:npm 拥有最大的开源库集合
- 快速开发:简洁的语法和丰富的工具
- 活跃的社区:持续的更新和支持
- 跨平台:支持所有主流操作系统
完整流程总结
- 安装 Node.js:从官网下载或使用包管理器
- 验证安装:
node --version和npm --version - 创建项目:编写
.js文件 - 运行程序:
node filename.js - 包管理:使用 npm 安装和管理依赖
- 开发调试:使用合适的编辑器和调试工具
- 部署上线:使用 pm2 等工具进行生产环境部署
通过本指南,你应该能够成功安装 Node.js 并运行你的第一个程序。继续学习和实践,你将能够构建出强大的 Node.js 应用程序!
浙公网安备 33010602011771号