Node.js
Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时环境,由 Ryan Dahl 于 2009 年发布。它让 JavaScript 突破了浏览器的限制,可以在服务端运行,用同一种语言完成前后端开发。Node.js 的事件驱动、非阻塞 I/O 模型使其在高并发 I/O 密集型场景下表现出色,特别适合构建 Web 服务器、API 服务、实时应用和命令行工具。
提示
Node.js 运行时环境知识索引
核心知识
运行时 系统整理了 Node.js 的核心知识体系。npm(Node Package Manager)是 Node.js 的包管理工具,通过语义化版本规范管理项目依赖——主版本号变更意味着不兼容的 API 修改,次版本号表示向下兼容的功能新增,补丁版本号则是问题修正。理解 ^ 和 ~ 前缀的含义,能避免依赖更新时引入破坏性变更。
异步编程是 Node.js 最核心的特性。从早期的回调函数到 Promise 再到 async/await,异步编程模式经历了三代演进。回调地狱是多层嵌套回调导致的代码可读性问题,Promise 通过链式调用解决了这个问题,而 async/await 则让异步代码看起来像同步代码一样直观。eventproxy 和 async 库提供了更细粒度的并发控制能力,适合处理多个异步任务的依赖关系。
JavaScript 的作用域机制直接影响代码行为。var 是函数作用域,存在变量提升问题;let 和 const 是块级作用域,更符合直觉。闭包是函数访问外部作用域变量的能力,它是数据私有化、函数工厂、柯里化等模式的基础。this 的指向规则在普通函数和箭头函数中不同——普通函数的 this 指向调用者,箭头函数的 this 指向定义时的外层作用域。
应用场景
Express 是 Node.js 生态中最流行的 Web 框架,通过中间件模式处理请求。中间件按照注册顺序依次执行,每个中间件可以处理请求、修改响应或调用 next() 传递给下一个。body-parser 解析请求体、cookie-parser 解析 Cookie、express-session 管理会话、cors 处理跨域——这些常用中间件组合起来构成了完整的 Web 服务能力。
MongoDB 与 Mongoose 的配合是 Node.js 项目中最常见的数据库方案。Mongoose 通过 Schema 定义数据模型,Model 提供 CRUD 操作接口,支持条件查询、分页、排序等能力。正则表达式在数据验证和文本处理中广泛使用,性能测试则通过 benchmark 库确保关键路径的执行效率。