🟢 Node.js 学习路线
135 个互动教程
Node.js 入门
创建 HTTP 服务器
NPM 包管理器 — 管理项目依赖
学习 npm 的基本用法:初始化项目、安装包、理解 package.json
Node.js 文件系统 — 读写文件
用 fs 模块读写文件、创建目录、查看文件信息
Node.js HTTP
学习HTTP模块
Node.js path 模块 — 路径处理
掌握路径拼接、解析、规范化,避免跨平台路径问题
Node.js OS 模块 — 系统信息
获取 CPU、内存、网络接口等操作系统信息
Node.js URL 解析
解析 URL 的各组成部分:协议、主机、路径、查询参数
Node.js DNS 解析
用 dns 模块查询域名对应的 IP 地址
Node.js process 对象 — 进程信息与控制
获取命令行参数、环境变量、控制进程退出
Node.js readline — 命令行交互
创建命令行问答界面,读取用户输入
Node.js 环境变量
学习环境变量
Express 快速搭建 Web 服务
用 Express 框架轻松创建 REST API,处理路由、请求参数、中间件
Node.js Crypto — 加密与哈希
用 crypto 模块进行数据加密、生成哈希、HMAC 签名
Node.js Cluster — 多进程利用多核 CPU
用 cluster 模块创建多个工作进程,充分利用多核 CPU 性能
Node.js 子进程 — 执行系统命令
用 child_process 模块执行 shell 命令、Python 脚本等外部程序
Node.js Net 模块 — TCP 网络编程
用 net 模块创建 TCP 服务器和客户端
Node.js zlib — 压缩与解压
用 gzip/deflate 压缩数据,减少传输体积
Node.js RESTful API 设计
Express 构建标准 REST API,CRUD + 状态码
Node.js 调试技巧
console/ndb/VS Code 调试器/--inspect
Node.js JWT 认证
jsonwebtoken 签发/验证/bcrypt 密码哈希
Node.js Worker Threads 工作线程
Worker Threads:new Worker()创建、parentPort通信、MessageChannel双向通道、SharedArrayBuffer共享内存、与child_process fork区别、CPU密集型任务并行
Node.js 原生测试运行器
Node.js 18+ Test Runner:node:test模块、describe/it/test、assert断言、--test-reporter输出、与Mocha/Jest对比、代码覆盖率实验性支持
Node.js Performance Hooks 性能监控
Performance测量:perf_hooks.performance.now()高精度时间、PerformanceObserver监听性能条目、trace_events追踪异步操作、与Async Hooks配合诊断
Express.js 进阶
Express进阶:自定义中间件模式(错误处理/请求日志/限流)、Router模块化路由、app.set/app.get配置、trust proxy代理信任、与Fastify性能对比
Fastify 高性能 Web 框架
Fastify框架:JSON Schema请求验证、Plugin插件系统、fastify-middie中间件兼容、序列化优化(fast-json-stringify)、比Express快2-5倍的原生基准测试
Prisma ORM 深入
Prisma深入:Prisma Schema数据模型、Prisma Client类型安全查询、Prisma Migrate数据库迁移、Prisma Studio可视化管理、与TypeORM/Sequelize对比
Node.js JWT 认证实战
JWT认证实战:jsonwebtoken签发/验证、access token + refresh token双令牌模式、token刷新策略、黑名单撤销、Cookie httpOnly存储、与OAuth2.0对比
Node.js Event Loop 深入
Event Loop深入:6个阶段(timers/pending callbacks/idle,prepare/poll/check/close callbacks)、nextTick微任务优先、setImmediate vs setTimeout(fn,0)、libuv线程池与阻塞操作
Node.js Cluster 集群
Node.js Cluster:cluster.fork()创建子进程、IPC进程间通信、共享端口(master分发/竞争监听)、优雅重启(zero-downtime restart)、PM2基于Cluster实现
Node.js Bull 任务队列
Bull任务队列(基于Redis):Queue.add添加任务、Worker.process处理、延时任务/delayed、重试策略attempts/backoff、事件监听(completed/failed/stalled)、Bull Board监控面板
Node.js fs 文件系统深入
Node.js fs深入:fs/promises异步API、流式读写大文件createReadStream/createWriteStream、fs.watch文件监视、文件锁flock、临时文件fs.mkdtemp、跨平台路径分隔符处理path.sep
Node.js child_process 子进程
Node.js子进程:exec/spawn/execFile/fork四种方式对比、stdio管道(stdin/stdout/stderr)、Shell vs no-shell、超时timeout/killSignal、跨平台注意事项(Windows cmd/Unix bash)
Node.js TLS/SSL
Node.js TLS模块:tls.createServer创建TLS服务器(key/cert/ca/passphrase)、tls.connect创建TLS客户端、ALPN协商应用层协议(h2/http1.1)、SNI服务器名称指示多证书
Node.js VM 沙箱
Node.js VM沙箱:vm.runInNewContext沙箱执行代码(受限Global对象/无Node API访问)、vm.Script预编译脚本重复执行、vm.createContext创建上下文、安全警告(沙箱逃逸风险/不用于运行不可信代码)
Node.js assert 断言
Node.js assert断言模块:assert(cond)/assert.ok、assert.strictEqual/deepStrictEqual(使用===而非==)、assert.throws/rejects测试异常、assert.ifError、assert.fail/assert.match/assert.doesNotMatch、严格断言模式strict assertion mod
Node.js 手写 HTTP 服务器
Node.js http模块手写HTTP Server:http.createServer((req,res)=>...)创建、req.url/req.method/req.headers请求信息获取、res.writeHead/ res.end响应、解析POST请求体(data+end事件拼接Buffer)、路由分发(if req.url==='/path')、静态文件serve(fs.crea
Node.js npm scripts 脚本
npm scripts深入:package.json scripts字段、pre/post生命周期钩子(prestart/poststart/prebuild/postbuild)、&&串行/&并行(npm-run-all/concurrently)、环境变量($npm_package_version/process.env.npm_*/cross-env)、npx执行未安装的包
Node.js 调试技术
Node.js调试:node --inspect开启Chrome DevTools调试/node --inspect-brk首行断点、VS Code launch.json配置Attach/Launch、debugger语句程序内断点、ndb(Google Chrome团队Node调试器)、console.trace打印调用栈/console.time计时/console.assert断言/con
Node.js 安全最佳实践
Node.js安全清单:helmet设置安全HTTP头、express-rate-limit限流防暴力破解、cors配置白名单、express-validator输入验证(防XSS/SQL注入/命令注入)、bcrypt密码哈希(不做MD5/SHA)、dotenv管理密钥不泄露(不要提交git)、npm audit检查依赖漏洞、helmet/csurf防CSRF、express-session安全配
Node.js AbortError 异常处理
AbortError异常模式:AbortController+AbortSignal配合fetch/stream/timers取消操作、AbortError被fetch抛出、检查error.name==='AbortError'区分取消vs其他错误、与setTimeout+AbortSignal实现超时取消模式
Node.js EventEmitter 深入
events模块EventEmitter深入:on/once/addListener/removeListener/removeAllListeners/off、emit触发、setMaxListeners/ getMaxListeners最大监听器限制、error事件特殊(没监听error事件时emit触发throw)、captureRejections捕获async listener异常、Ev
Node.js Performance 计时 API
Node.js高精度计时API:performance.now()亚毫秒精度单点计时、performance.mark(name)/measure(name,start,end)命名标记和测量、performance.timerify(fn)包装函数自动计时、与process.hrtime.bigint()比较(hrtime单调时钟不受系统时间调校影响)
Node.js HTTP Agent 连接池
Node.js http.Agent连接池:maxSockets/maxFreeSockets控制最大并发连接、keepAlive长连接复用减少TCP握手、Agent作用于http.request/https、连接池对高并发请求性能影响
Node.js 弃用 API 处理
Node.js弃用API管理:util.deprecate包装函数标记弃用(可选code标识)、process.emitWarning('msg','DeprecationWarning',code)、--pending-deprecation/--throw-deprecation CLI标志控制弃用行为、LIST_OF_DEPRECATED_APIS在Node文档中查看、迁移弃用API策略
Node.js 全局对象深入
Node.js全局对象:global/globalThis(跨JS环境)、__dirname/__filename(CommonJS)、process(进程信息/环境变量/退出/信号/Buffer/console/定时器)/URL/URLSearchParams/TextEncoder/TextDecoder/navigator.language(18+)、require/module/expor
Node.js WASI 运行 WebAssembly
Node.js WASI(WebAssembly System Interface/WASI API在Node中运行Wasm):WASI类初始化、通过wasi实例+importObject启动Wasm模块、WASI Preview 1和Preview 2组件模型
Node.js 模块系统 — CommonJS 与 ES Modules
Node.js模块系统:require/module.exports(CommonJS)vs import/export(ESM)、模块缓存、__dirname/__filename、package.json的type字段
Node.js Stream 流:高效处理大数据
学习如何使用 Node.js Stream API 处理大文件和数据流,提升应用性能。
Node.js Buffer:处理二进制数据
掌握 Buffer 类,在 Node.js 中高效处理二进制数据。
Node.js http 模块构建Web服务器
Node.js原生http模块:createServer创建服务器、request/response对象、路由处理、JSON响应、静态文件服务。对比Express框架
Node.js 事件循环:理解异步机制
深入剖析事件循环的各个阶段,掌握异步代码执行顺序。
Node.js 微任务:nextTick 与 Promise
区分微任务队列与宏任务队列,优化异步代码执行顺序。
Node.js Worker 线程:并行处理 CPU 密集型任务
使用 worker_threads 模块创建多线程,突破单线程瓶颈。
Node.js 数据库操作 — MySQL
Node.js连接MySQL:mysql2/promise库、连接池createPool、预处理语句防注入、CRUD操作、事务处理、批量插入
Node.js 性能分析:识别并解决瓶颈
学习使用内置工具和第三方库分析 Node.js 应用性能。
Node.js JWT 认证实战
Node.js JWT认证:jsonwebtoken库生成/验证Token、bcrypt密码加密、登录注册接口、认证中间件、Token刷新机制
Node.js 安全最佳实践:保护你的应用
掌握输入验证、防注入、HTTPS 等核心安全措施。
Node.js 文件上传 multer
Node.js文件上传:multer中间件、单文件/多文件上传、文件大小限制、文件类型过滤、存储到本地/云存储、进度反馈
Node.js GraphQL:构建灵活的 API
使用 Apollo Server 创建类型安全的 GraphQL API。
Node.js WebSocket 实时通信
Node.js WebSocket:ws库创建WebSocket服务器、连接/消息/关闭事件、广播消息、心跳检测、简易聊天室实现
Node.js WebSocket:实时双向通信
使用 ws 库实现 WebSocket 服务器与客户端实时交互。
Node.js 定时任务 node-cron
Node.js定时任务:node-cron库、cron表达式语法、定时备份数据库、定时发送邮件、定时清理日志、与PM2配合
Node.js 部署:生产环境最佳实践
学习使用 PM2、Docker 和 Nginx 部署 Node.js 应用。
Node.js Stream 流:高效处理大数据
学习如何使用 Node.js Stream 以流式方式处理大文件,提升内存效率。
Node.js Buffer:二进制数据操作详解
深入理解 Node.js Buffer 类,学习如何操作二进制数据。
Node.js 环境变量管理 dotenv
Node.js环境变量:process.env、dotenv库加载.env文件、.env.example模板、不同环境配置(development/production/test)、cross-env跨平台、敏感信息管理
Node.js 事件循环:理解异步非阻塞 I/O
掌握 Node.js 事件循环机制,理解 setTimeout、setImmediate、process.nextTick 的执行顺序。
Node.js 微任务:Promise 与 process.nextTick
深入理解微任务队列,掌握 Promise.then 和 process.nextTick 的执行时机。
Node.js Worker 线程:实现真正的并行计算
学习使用 worker_threads 模块创建多线程,处理 CPU 密集型任务。
Node.js 流式处理
学习如何使用 Node.js Stream 处理大数据,实现高效的数据流读写与转换。
Node.js Stream 流:高效处理大数据
学习如何使用 Node.js 的 Stream 接口以流式方式处理大文件与数据管道。
Node.js Buffer:二进制数据操作
掌握 Buffer 类的创建、读写、编码转换及实际应用场景。
Node.js 事件循环:阶段与顺序
深入理解事件循环的六个阶段以及 timers、poll、check 队列的执行顺序。
Node.js 微任务:process.nextTick 与 Promise
区分微任务(Microtask)与宏任务(Macrotask),掌握它们在事件循环中的执行时机。
Node.js Worker 线程:多线程并行计算
使用 worker_threads 模块创建独立线程,实现 CPU 密集型任务的并行处理。
深入理解背压机制与自定义流实现
揭秘Node.js流内部背压控制原理,手写可读/可写/转换流
使用Node-API绑定C库的完整实战
不依赖node-gyp,通过Node-API直接调用系统级C函数
弱引用与细粒度依赖注入容器
利用WeakRef和FinalizationRegistry实现自动清理的DI容器
V8 TurboFan JIT优化破译与字节码分析
通过--print-opt-code和--trace-turbo分析函数优化编译过程
基于io_uring的零拷贝文件服务器
绕过libuv,直接在Node.js中使用Linux io_uring实现异步IO
Worker Threads共享内存与原子操作
使用SharedArrayBuffer和Atomics实现无锁数据传输
实现类HAProxy的HTTP请求分发器
在Cluster模块上构建加权轮询、最小连接数和一致性哈希
使用AsyncLocalStorage实现全链路追踪
不依赖OpenTelemetry,手动实现跨异步操作的请求ID传递
Node.js策略模块与依赖完整性验证
使用内置policy模块实现模块白名单和内容哈希校验
WASI Preview2运行时:在Node.js中运行WebAssembly系统应用
使用Node.js WASI实现文件系统、随机数、时间等系统调用
AbortController 与可读流的优雅取消机制
深入 AbortController 在 Web Streams API 中的应用,实现可读流、fetch 请求及异步迭代器的统一取消。
Worker Threads 的 TransferList 零拷贝通信
利用 transferList 将 ArrayBuffer 所有权在线程间转移,避免序列化开销,实现高性能数据交换。
Diagnostics Channel 结合 Async Hooks 追踪请求全链路
使用 diagnostics_channel 发布自定义事件,配合 Async Hooks 追踪异步资源的生命周期,实现请求级别的完整追踪。
利用 Policy 机制实现模块加载的完整性校验
通过 --experimental-policy 创建策略文件,限制模块来源、哈希校验和权限,防止供应链攻击。
EventTarget 自定义事件模拟 Observable 模式
不使用 RxJS,基于 Node.js 的 EventTarget 实现简易的 Observable,支持 map、filter、pipe 操作。
Module sync hook 在静态分析中的隐秘应用
利用 module.syncBuiltinESMExports 和内置模块的同步钩子,在运行时注入新 API 而不修改源代码。
WebAssembly 内存操作与 WASI 自定义 I/O 插件
编译 C 代码为 Wasm,通过 WASI 接口在 Node.js 中实现自定义文件系统,绕过传统 fs 限制。
V8 Serializer 自定义类编码与远程过程调用
利用 v8.serialize 和 v8.deserialize 的 customizer 钩子,实现自定义类的深度克隆与跨进程 RPC 传输。
Inspector Session 与调试协议实现动态代码热更新
通过 inspector 模块连接 V8 调试协议,在不重启进程的情况下替换函数实现、修改变量。
TLS 会话复用与预生成密钥的零 RTT 方案
利用 TLS 会话 ID 和预生成主密钥,实现客户端与服务端之间的 0-RTT 连接,大幅降低握手延迟。
Node.js 内存泄漏实战:使用 Clinic.js 分析堆快照
深入讲解如何利用 Clinic.js 工具进行内存泄漏检测与堆快照分析,涵盖事件循环延迟、GC 行为等高级调试技术。
Node.js 原生扩展:使用 napi-rs 构建 Rust 模块
探索如何用 Rust 编写 Node.js 原生插件,对比 node-gyp 与 napi-rs 的优势,实现高性能计算模块。
诊断通道:构建 Node.js 应用内部监控系统
利用 Diagnostics Channel API 实现应用级事件追踪,无需修改第三方库即可监控异步操作、数据库查询等内部行为。
Worker Threads 进阶:构建多阶段流水线任务处理
超越基础用法,设计线程池与消息传递机制,实现 CPU 密集型任务的流水线处理(类似 Gulp 风格)。
QUIC 与 HTTP/3:在 Node.js 中实验下一代传输协议
利用 Node.js 实验性 QUIC 支持构建低延迟应用,对比 TCP+HTTP/2 的优势,实现多路复用与 0-RTT。
密码学实战:实现 Shamir 秘密共享算法
使用 Node.js crypto 模块构建 (t, n) 门限秘密共享系统,涉及有限域运算与拉格朗日插值。
深入 llhttp:定制 HTTP 解析器实现专有协议
学习 Node.js 底层 HTTP 解析器 llhttp 的原理,并基于它构建自定义的二进制协议解析器。
事件循环微观:利用 timing 阶段实现精确调度
深入 Node.js 事件循环的六个阶段,利用 timers、pending callbacks 等实现微秒级任务调度与延迟控制。
抽象语法树手术:用 Node.js 编写 Babel 插件修改代码
学习利用 AST 工具(如 @babel/parser)分析 JavaScript 代码,并编写插件自动插入性能埋点或转换语法。
SQLite VFS 定制:在内存文件系统或云存储上运行数据库
利用 better-sqlite3 的 VFS 接口,创建自定义虚拟文件系统驱动,实现加密、压缩或基于 S3 的数据库存储。
V8 代码缓存与编译优化
深入 V8 引擎的代码缓存机制,学习如何利用编译缓存提升 Node.js 应用启动速度。
Node.js FFI 与原生系统调用
绕过 libuv,直接使用 ffi-napi 调用操作系统底层 API,实现极客级系统编程。
定制事件循环调度器
通过 libuv 钩子劫持 Node.js 事件循环,实现自定义任务调度与优先级控制。
跨线程共享内存与无锁编程
利用 SharedArrayBuffer 和 Atomics 在 Worker 线程间实现高性能无锁数据结构。
V8 启动快照与自定义反序列化
创建并加载 V8 自定义快照,实现 Node.js 应用的即时启动。
堆快照分析与内存泄漏侦探
使用 V8 堆分析 API 编写自动内存泄漏检测工具。
诊断通道与分布式追踪
基于 diagnostics_channel 构建全链路追踪系统,监控异步操作生命周期。
内置 SQLite VFS 与自定义虚拟文件系统
利用 Node.js 的 better-sqlite3 实现自定义 VFS,将数据库存储在内存或云存储中。
TLS 会话恢复与中间人加速
通过 TLS 会话 ID 和会话票证,实现 HTTP/2 连接的零往返恢复。
N-API 线程安全函数与异步工作队列
编写 Node.js 原生插件,使用 N-API 实现非阻塞的 CPU 密集型任务。
V8 沙盒模式与内存快照分析
探索 Node.js 21+ 的 V8 沙盒隔离机制,结合 heap snapshot 分析内存泄漏的微观模式。
重写 Libuv 线程池调度算法
通过 C++ 插件劫持 Libuv 线程池,实现基于优先级的任务调度(非公平队列)。
基于 AsyncLocalStorage 的跨安全域追踪器
构建一个穿越异步边界的跟踪系统,并集成权限检查(跨 vm 模块与 worker_threads)。
WebAssembly GC 与 JavaScript 终结器协作
在 Node.js 中让 WASM 分配的对象自动注册 FinalizationRegistry,实现跨运行时内存回收。
可读流背压可视化与动态调节器
用 Performance API 测量流内部缓冲区水位,并动态调整 highWaterMark 避免溢出或饥饿。
V8 堆栈追踪符号化与内联恢复
解析 V8 原生 C++ 堆栈帧,将混淆的符号名映射回 JavaScript 函数名(包括被优化掉的函数)。
基于 Protocol Buffers 的 Cluster IPC 协议协商
在 Node.js cluster 主从进程间,用 protobuf 定义动态 schema 实现类型安全的双向 RPC。
集成抗量子密码的 TLS 自定义密码套件
在 Node.js 中注册 NIST 标准化的 CRYSTALS-Kyber 算法作为 TLS 密钥交换,使用原生插件绕过 OpenSSL 限制。
微任务优先级队列与事件循环节流
利用 queueMicrotask 与自定义微任务调度器,构建可抢占的微任务优先级系统,避免长微任务阻塞事件循环。
将 Node.js 作为嵌入式引擎集成到 Rust 宿主
使用 napi-rs 将 Node.js 运行时嵌入 Rust 二进制,并通过 FFI 暴露宿主函数与 JavaScript 双向调用。
Node.js 文件系统与流的内核:直接操作文件描述符与零拷贝
超越 fs.readFile 与 fs.createReadStream,深入文件描述符 (fd)、低级 I/O 以及基于 Buffer 的零拷贝流实现。
Event Loop 核心:微任务队列与未处理的 Promise 拒绝陷阱
深入 V8 微任务队列与 libuv 阶段交互,揭示未处理拒绝 (unhandledRejection) 的触发时机及内存泄漏场景。
高级 Worker Threads:可转移对象与共享内存原子操作
不再只是 postMessage 字符串,而是使用 ArrayBuffer 转移 (transferable) 与 SharedArrayBuffer 实现真正的无锁数据交换。
原生插件实战:使用 N-API 为 Node.js 编写 C++ 绑定
脱离 node-gyp 恐惧,用 N-API (node-api) 创建线程安全函数,在原生代码中调用 JS 回调。
Cluster 进阶:HTTP 请求亲缘性与共享端口策略
利用 cluster 模块实现粘性会话 (sticky sessions) 与自定义负载均衡,超越默认的 round-robin。
流的高级背压:构建自定义可写流与转换流的水位线控制
深入 stream 内部状态,实现自己的 highWaterMark 逻辑,以及基于背压的速率限制器。
TLS/SSL 会话恢复:减少握手开销的服务器端实现
使用 TLS 会话 ID 与会话票证 (session ticket) 在 Node.js 中实现无缝重连,提升 HTTPS 性能。
子进程的多路复用:用单个 IPC 通道传输多个逻辑流
突破 child_process stdio 限制,通过自定义协议在父子进程间复用多个虚拟通道。
Async Hooks 深潜:追踪所有异步资源的生存期与关联
利用 async_hooks 模块监控 Promise、Timeout、TCPSocket 等异步资源的创建与销毁,实现全链路追踪。
V8 Inspector 协议:用 Node.js 自定义调试器与性能分析器
通过 WebSocket 连接 V8 Inspector,发送 CDP (Chrome DevTools Protocol) 命令,实现自定义断点、CPU 剖析。