跳到主要内容

Node.js 教程

Node.js 是一个开源、跨平台的 JavaScript 运行环境,让 JavaScript 可以脱离浏览器在服务器端运行。它基于 Chrome V8 引擎构建,具有高性能、事件驱动、非阻塞 I/O 等特点。

什么是 Node.js

核心概念

Node.js 不是一个框架,也不是一门新的编程语言,而是一个 JavaScript 运行环境

单线程与事件循环

Node.js 采用单线程模型,但这并不意味着它不能处理并发:

  • 单线程:主线程只有一个,避免多线程编程的复杂性
  • 事件循环:通过事件循环机制处理并发请求
  • 非阻塞 I/O:I/O 操作不会阻塞主线程

Node.js 与浏览器 JavaScript 的区别

特性Node.js浏览器
运行环境服务器浏览器
全局对象globalwindow
模块系统CommonJS / ES ModulesES Modules
文件系统可直接访问受限/不可访问
DOM
网络请求http 模块fetch / XMLHttpRequest
依赖管理npm无(通过 CDN 或打包工具)

为什么选择 Node.js

优势

  1. 统一的技术栈:前后端都使用 JavaScript,降低学习成本
  2. 高性能:V8 引擎提供优秀的执行效率
  3. 丰富的生态系统:npm 拥有超过 200 万个包
  4. 非阻塞 I/O:天然适合处理高并发场景
  5. 跨平台:支持 Windows、macOS、Linux
  6. 活跃的社区:持续更新,问题容易找到解决方案

适用场景

不太适合的场景

  • CPU 密集型计算:如视频编码、图像处理(可用 Worker Threads 或 C++ 插件解决)
  • 大型企业应用:可能需要更成熟的框架如 Java Spring

Node.js 架构

核心组件

  • V8 引擎:Google 开发的 JavaScript 引擎,负责解析和执行 JavaScript 代码
  • Libuv:跨平台的异步 I/O 库,提供事件循环和线程池
  • 核心模块:Node.js 内置的模块,如 fshttppath
  • npm:Node.js 的包管理器,管理项目依赖

快速开始

第一个 Node.js 程序

创建 hello.js 文件:

// hello.js
console.log('Hello, Node.js!');

// 获取 Node.js 版本
console.log(`Node.js 版本: ${process.version}`);

// 获取当前工作目录
console.log(`当前目录: ${process.cwd()}`);

运行:

node hello.js

输出:

Hello, Node.js!
Node.js 版本: v20.10.0
当前目录: /path/to/your/project

创建 HTTP 服务器

// server.js
const http = require('node: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('你好,Node.js!');
});

server.listen(port, hostname, () => {
console.log(`服务器运行在 http://${hostname}:${port}/`);
});

运行:

node server.js

访问 http://127.0.0.1:3000,你将看到 "你好,Node.js!"。

教程目录

入门基础

核心概念

内置模块

异步编程

Web 开发

进阶主题

  • 测试 - 单元测试与集成测试
  • 部署 - 生产环境部署

参考资料

学习建议

  1. 先掌握 JavaScript 基础:理解 ES6+ 语法、作用域、闭包等概念
  2. 理解异步编程:这是 Node.js 的核心,要深入理解事件循环
  3. 动手实践:每个知识点都要写代码验证
  4. 阅读官方文档:Node.js 官方文档质量很高
  5. 关注最佳实践:学习项目结构和代码规范

延伸阅读