用途
该技能为构建现代 Node.js 应用提供综合指导,覆盖事件循环、异步模式、流、文件系统操作、HTTP 服务器、进程管理以及面向生产环境的 Node.js 开发最佳实践。
适用场景包括:构建 RESTful API 与后端服务;创建命令行界面(CLI)工具与实用程序;开发微服务与分布式系统;构建基于 WebSocket 或 Server-Sent Events 的实时应用;创建构建工具、任务运行器与开发工具;处理文件与数据转换;实现服务端数据校验与业务逻辑;构建代理服务器与中间件层;创建自动化脚本与系统工具;开发无服务器函数与云原生应用;实现后台任务处理器与工作进程;构建 GraphQL 服务器与 API 网关。
主要能力
事件循环
事件循环是 Node.js 的核心,使单线程 JavaScript 也能进行非阻塞 I/O。技能讲解事件循环各阶段顺序:Timers(setTimeout、setInterval)、Pending callbacks(上一轮迭代延迟的 I/O 回调)、Idle/prepare(内部使用)、Poll(获取新 I/O 事件)、Check(setImmediate 回调)、Close callbacks(socket.on('close'))。并通过示例说明执行顺序:process.nextTick 与 Promise 先于其他阶段运行。最佳实践包括:不要阻塞事件循环,避免使用 fs.readFileSync 等同步阻塞操作,改用回调、Promise 或 async/await;避免重 CPU 操作,必要时通过 worker_threads 将计算卸载到工作线程。
模块系统
支持 CommonJS 与 ES Modules 两种组织代码的方式。CommonJS 使用 module.exports / exports 导出,require 导入内置模块、npm 包与本地文件。ES Modules 使用 export / export default 导出,import 导入,需 .mjs 扩展名或在 package.json 中设置 "type": "module"。技能还列出无需 npm 安装的核心内置模块:fs、path、http、https、crypto、os、events、stream、util、child_process、cluster、url、querystring。
异步编程
涵盖多种异步处理模式:回调(error-first 回调模式,并指出应避免回调地狱)、Promise(then/catch/finally、链式调用、Promise.all 并行、Promise.race、Promise.allSettled、Promise.any)、async/await(基本用法、顺序执行、并行执行、顶层 await、错误处理模式、Promise.allSettled 多操作错误处理),以及 util.promisify 将回调函数转换为 Promise 和自定义 promisify。
流
流是 Node.js 处理数据的高效特性。技能介绍流类型:可读流(fs.createReadStream,含 encoding 与 highWaterMark 分块)、可写流(fs.createWriteStream)、管道(pipe)、转换流(Transform,如大写转换)、自定义可读流与自定义可写流。流模式包括:pipeline 自动处理错误与清理、stream/promises 的 promisePipeline、背压处理(write 返回 false 时 pause,drain 时 resume)。
文件系统
fs 模块提供文件系统操作。读取文件涵盖同步(readFileSync,生产环境应避免)、回调、Promise、async/await 以及读取 JSON。写入文件涵盖 writeFile、appendFile、写入 JSON、原子写入(写临时文件后 rename)。文件操作涵盖检查存在、获取 stat、复制、移动/重命名、删除、创建目录、读取目录(含 withFileTypes)、删除目录(含递归)、fs.watch 监听文件变化。
路径工具
path 模块提供路径处理:join 拼接、resolve 解析绝对路径、dirname、basename、extname、parse、format、normalize、isAbsolute、relative。
使用方式
该技能以代码示例与最佳实践说明的形式提供指导,内容按主题组织,可直接参考其中的代码模式用于实际开发。资料未提供具体的安装命令或调用步骤。
适用场景与限制
适用于后端服务、CLI、微服务、实时应用、构建工具、文件处理、代理、自动化脚本、无服务器函数、后台任务与 GraphQL 服务器等。限制方面:资料未提供收费、价格、平台支持范围或效果保证等信息;同步阻塞操作在生产环境中应避免;重 CPU 任务需借助 worker_threads 卸载。