Node.js 简介与环境搭建
章节介绍
欢迎来到 Node.js 的世界!Node.js 是一个开源的跨平台 JavaScript 运行环境,它让开发者能够在浏览器之外运行 JavaScript 代码。本教程将从零开始,帮助您了解 Node.js 的基本概念,并搭建完整的开发环境。无论您是编程新手还是有一定经验的开发者,本教程都将引导您一步步掌握 Node.js 开发技能。
核心知识点
什么是 Node.js
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。与传统的 JavaScript 只能在浏览器中运行不同,Node.js 让 JavaScript 可以在服务器端运行,这意味着您可以使用同一种语言编写前端和后端代码。
Node.js 的核心特点:
- 跨平台:可以在 Windows、macOS、Linux 等多个操作系统上运行
- 高性能:基于 V8 引擎,执行速度快
- 事件驱动:采用非阻塞 I/O 模型,适合处理高并发
- 单线程:使用单线程模型,避免了线程管理的复杂性
Node.js 的工作原理
Node.js 采用事件驱动、非阻塞 I/O 的模型,这使得它非常适合处理大量的并发请求。当 Node.js 执行 I/O 操作(如读取文件、访问数据库)时,它不会阻塞线程,而是在操作完成后通过回调函数通知程序。
传统阻塞模型:
┌─────────────┐
│ 线程 1 │ → 等待 I/O 完成 → 继续执行
└─────────────┘
┌─────────────┐
│ 线程 2 │ → 等待 I/O 完成 → 继续执行
└─────────────┘
┌─────────────┐
│ 线程 3 │ → 等待 I/O 完成 → 继续执行
└─────────────┘
Node.js 非阻塞模型:
┌─────────────┐
│ 单线程主循环 │ → 发起 I/O 请求 → 继续处理其他任务
│ │ ↓
│ │ I/O 完成回调 → 处理结果
└─────────────┘Node.js 的应用场景
Node.js 特别适合以下场景:
- Web 服务器:构建高性能的 Web 应用和 API
- 实时应用:聊天应用、实时协作工具
- 命令行工具:开发 CLI 工具和自动化脚本
- 微服务:构建轻量级的微服务架构
- 数据流应用:处理大量数据流的应用
Node.js 的安装
Node.js 的安装非常简单,支持多种操作系统:
Windows 系统:
- 访问 Node.js 官方网站:https://nodejs.org/
- 下载 LTS(长期支持)版本的安装包
- 双击安装包,按照提示完成安装
- 打开命令提示符,输入
node -v检查安装是否成功
macOS 系统:
- 使用 Homebrew 安装:
brew install node - 或从官网下载 .pkg 安装包
- 打开终端,输入
node -v检查安装
Linux 系统:
- 使用包管理器安装:
sudo apt-get install nodejs npm # Ubuntu/Debian sudo yum install nodejs npm # CentOS/RHEL - 或使用 NodeSource 仓库安装最新版本
开发工具配置
推荐的开发工具:
- 代码编辑器:Visual Studio Code(推荐)
- 版本管理:nvm(Node Version Manager)
- 包管理器:npm(随 Node.js 自动安装)
安装 nvm(推荐):
# Windows
# 下载 nvm-windows 安装包
# macOS/Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash使用 nvm 管理 Node.js 版本:
nvm install 18.17.0 # 安装指定版本
nvm use 18.17.0 # 切换版本
nvm list # 列出已安装版本
nvm alias default 18.17.0 # 设置默认版本验证安装
安装完成后,在命令行中运行以下命令验证:
node --version # 查看 Node.js 版本
npm --version # 查看 npm 版本如果看到版本号,说明安装成功!
实用案例分析
案例:创建第一个 Node.js 程序
让我们创建一个简单的 Hello World 程序,体验 Node.js 的基本用法。
步骤 1:创建项目目录
mkdir hello-nodejs
cd hello-nodejs步骤 2:创建程序文件
创建一个名为 app.js 的文件:
console.log('Hello, Node.js!');
console.log('欢迎来到 Node.js 的世界!');
console.log('这是您的第一个 Node.js 程序。');步骤 3:运行程序
node app.js您将看到以下输出:
Hello, Node.js!
欢迎来到 Node.js 的世界!
这是您的第一个 Node.js 程序。案例:创建一个简单的 HTTP 服务器
让我们创建一个简单的 Web 服务器,这是 Node.js 最常见的应用场景。
步骤 1:创建服务器文件
创建 server.js 文件:
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('Hello, World! 欢迎访问 Node.js 服务器!');
});
server.listen(port, hostname, () => {
console.log(`服务器运行在 http://${hostname}:${port}/`);
});步骤 2:启动服务器
node server.js您将看到:
服务器运行在 http://127.0.0.1:3000/步骤 3:访问服务器
打开浏览器,访问 http://127.0.0.1:3000/,您将看到:
Hello, World! 欢迎访问 Node.js 服务器!代码解析
让我们逐行分析这个服务器代码:
const http = require('http');这行代码引入了 Node.js 的内置 HTTP 模块。require 是 Node.js 中加载模块的方法。
const hostname = '127.0.0.1';
const port = 3000;定义服务器的主机名和端口号。127.0.0.1 是本地回环地址,3000 是常用的开发端口。
const server = http.createServer((req, res) => {使用 http.createServer() 方法创建一个 HTTP 服务器。这个方法接受一个回调函数,每当有新的请求到达时,这个回调函数就会被调用。
回调函数接收两个参数:
req(request):请求对象,包含请求的所有信息res(response):响应对象,用于向客户端发送响应
res.statusCode = 200;设置 HTTP 响应状态码为 200,表示请求成功。
res.setHeader('Content-Type', 'text/plain; charset=utf-8');设置响应头的 Content-Type,指定返回的内容类型为纯文本,并设置字符编码为 UTF-8。
res.end('Hello, World! 欢迎访问 Node.js 服务器!');发送响应内容并结束响应。res.end() 方法会向客户端发送数据并关闭连接。
server.listen(port, hostname, () => {
console.log(`服务器运行在 http://${hostname}:${port}/`);
});让服务器监听指定的端口和主机名。当服务器成功启动后,回调函数会被执行,打印服务器地址。
案例:使用 package.json 管理项目
package.json 是 Node.js 项目的配置文件,用于管理项目信息和依赖。
步骤 1:初始化项目
npm init -y这会创建一个默认的 package.json 文件:
{
"name": "hello-nodejs",
"version": "1.0.0",
"description": "我的第一个 Node.js 项目",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}步骤 2:添加启动脚本
修改 package.json,添加启动脚本:
{
"name": "hello-nodejs",
"version": "1.0.0",
"description": "我的第一个 Node.js 项目",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "node server.js"
},
"keywords": ["nodejs", "tutorial"],
"author": "您的名字",
"license": "ISC"
}步骤 3:使用脚本启动服务器
npm start现在您可以使用 npm start 命令启动服务器,而不需要记住具体的命令。
代码示例
示例 1:基础命令行交互
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('请输入您的名字:', (answer) => {
console.log(`您好,${answer}!欢迎学习 Node.js!`);
rl.close();
});示例 2:获取系统信息
const os = require('os');
console.log('操作系统类型:', os.type());
console.log('操作系统平台:', os.platform());
console.log('CPU 架构:', os.arch());
console.log('CPU 核心数:', os.cpus().length);
console.log('总内存:', (os.totalmem() / 1024 / 1024 / 1024).toFixed(2), 'GB');
console.log('空闲内存:', (os.freemem() / 1024 / 1024 / 1024).toFixed(2), 'GB');
console.log('主机名:', os.hostname());
console.log('用户主目录:', os.homedir());示例 3:简单的计算器
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('请输入第一个数字:', (num1) => {
rl.question('请输入第二个数字:', (num2) => {
const n1 = parseFloat(num1);
const n2 = parseFloat(num2);
console.log('\n计算结果:');
console.log(`${n1} + ${n2} = ${n1 + n2}`);
console.log(`${n1} - ${n2} = ${n1 - n2}`);
console.log(`${n1} × ${n2} = ${n1 * n2}`);
console.log(`${n1} ÷ ${n2} = ${(n1 / n2).toFixed(2)}`);
rl.close();
});
});实现技巧与注意事项
开发环境配置建议
使用 VS Code:推荐使用 Visual Studio Code 作为代码编辑器,它对 JavaScript 和 Node.js 有很好的支持
安装有用的扩展:
- ESLint:代码质量检查
- Prettier:代码格式化
- Node.js Exec:直接在编辑器中运行 Node.js 代码
- Auto Rename Tag:自动重命名标签
配置代码格式化:
在项目根目录创建.prettierrc文件:{ "semi": true, "singleQuote": true, "tabWidth": 2, "trailingComma": "es5" }
常用命令速查
# Node.js 命令
node script.js # 运行 JavaScript 文件
node --version # 查看 Node.js 版本
node --help # 查看帮助信息
# npm 命令
npm init # 初始化项目
npm install # 安装依赖
npm install <package> # 安装指定包
npm update # 更新依赖
npm run <script> # 运行脚本
npm list # 列出已安装的包调试技巧
使用 console.log:最简单的调试方法
console.log('调试信息:', variable);使用 debugger 语句:在代码中设置断点
debugger; // 程序会在这里暂停使用 Node.js 调试器:
node inspect script.js
版本管理建议
- 使用 LTS 版本:生产环境推荐使用 LTS(长期支持)版本
- 定期更新:关注 Node.js 的安全更新和重要更新
- 使用 nvm:方便在不同项目间切换 Node.js 版本
常见问题与解决方案
问题 1:安装后 node 命令无法识别
原因:环境变量配置不正确
解决方案:
- 重新启动命令行工具
- 检查环境变量 PATH 是否包含 Node.js 安装路径
- Windows 用户可能需要重启电脑
问题 2:npm 安装速度慢
原因:默认的 npm 源在国外
解决方案:
使用淘宝 npm 镜像:
npm config set registry https://registry.npmmirror.com问题 3:端口被占用
错误信息:Error: listen EADDRINUSE: address already in use
解决方案:
- 更换端口号
- 找到占用端口的进程并关闭:
# Windows netstat -ano | findstr :3000 taskkill /PID <进程ID> /F # macOS/Linux lsof -i :3000 kill -9 <进程ID>
问题 4:模块找不到
错误信息:Error: Cannot find module 'xxx'
解决方案:
- 确认模块名称拼写正确
- 检查是否在正确的目录中
- 运行
npm install安装依赖
总结
本教程介绍了 Node.js 的基本概念、安装方法和开发环境配置。通过创建简单的程序和 HTTP 服务器,您已经体验了 Node.js 的基本用法。
通过本集的学习,您应该能够:
- 理解 Node.js 是什么以及它的核心特点
- 成功安装和配置 Node.js 开发环境
- 创建并运行简单的 Node.js 程序
- 搭建一个基本的 HTTP 服务器
- 使用 package.json 管理项目
在下一集中,我们将回顾 JavaScript 的基础知识,为后续的 Node.js 学习打下坚实的基础。准备好继续您的 Node.js 学习之旅了吗?让我们继续前进!