Node.js 核心
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。
1. 核心特性
- 事件驱动 (Event-driven): 利用 EventEmitter 处理并发。
- 非阻塞 I/O (Non-blocking I/O): 依赖 libuv 库实现异步操作。
- 单线程: 主线程单线程,适合 I/O 密集型,不适合 CPU 密集型。
2. 模块系统
- CommonJS (CJS): Node.js 默认。
require/module.exports. 同步加载。 - ES Modules (ESM): 标准模块。
import/export. 异步/静态分析。
3. 异步编程
- Callback: 错误优先风格
(err, data) => {}(容易导致回调地狱). - Promise: 链式调用。
- Async/Await: 像写同步代码一样写异步代码。
4. 核心模块
bttp: 创建服务器。fs: 文件系统操作 (fs.readFile, fs.createReadStream)。path: 路径处理 (path.join, path.resolve)。events: 事件触发器 (EventEmitter)。stream: 流 (Readable, Writable, Duplex, Transform),用于处理大文件。buffer: 处理二进制数据。
5. Event Loop (事件循环)
与浏览器不同,Node.js 的 Event Loop 有 6 个阶段,主要关注:
- Timers: setTimeout, setInterval
- Poll: I/O 回调
- Check: setImmediate
(注意:Node 11+ 后行为与浏览器趋同,微任务在宏任务间隙执行)
6. 常用框架
- Express: 极简、灵活、中间件 (线性模型)。
- Koa: 由 Express 原班人马打造,基于 async/await,洋葱模型中间件。
- NestJS: TypeScript 支持,通过装饰器、依赖注入提供类似 Angular/Spring 的架构,适合大型企业级应用。