github.com · nodejs/node
Node.js - 开源琅嬛阁
项目介绍
Node.js 是 OpenJS Foundation 维护的开源、跨平台 JavaScript 运行时,将 Google V8 引擎与 libuv 事件循环结合,让 JavaScript 可在服务端执行 I/O 密集型任务。它是 npm 生态的基石,支撑着 Express、Next.js、Electron 等大量框架与工具。本仓库为 Node.js 核心源码;日常开发通常从 nodejs.org 安装二进制,文档与教程亦以官网为准。
核心特性
- 跨平台运行时:官方提供 macOS、Windows、Linux 安装包与二进制,同一套 JavaScript 代码可在多平台部署
- 事件驱动与非阻塞 I/O:基于 libuv 的高并发模型,适合 API 服务、实时应用与 CLI 工具
- 成熟发布节奏:Current 每 6 个月发大版本;偶数大版本转 LTS,提供 Active LTS(12 个月)与 Maintenance(18 个月)支持
- 内置 npm 与丰富标准库:
fs、http、crypto、worker_threads等模块覆盖常见服务端场景 - 开放治理:TSC 技术指导委员会与协作者体系透明运作,安全响应与发布流程规范(见 GOVERNANCE.md)
对用户价值
若你需要用 JavaScript 构建后端 API、自动化脚本、构建工具或桌面应用(配合 Electron),Node.js 是最主流、生态最完整的选择。LTS 版本为企业提供可预期的升级窗口与安全补丁节奏;npm 注册表则让依赖管理与工具链集成成本极低。对于全栈团队,前后端共用语言可降低协作门槛;代价是 CPU 密集任务需借助 Worker Threads、子进程或原生扩展,单线程事件循环模型需在架构设计时留意。
与替代方案
- 相比 Deno,Node.js 生态规模、第三方包数量与招聘市场显著更大;Deno 默认更安全(权限模型)、原生 TypeScript 支持更好,适合 greenfield 项目或对安全沙箱有强需求场景。
- 相比 Bun,Node.js 稳定性与 LTS 承诺经过更长生产验证;Bun 在启动速度、包管理一体化方面更快,但生态兼容性与企业级支持仍在追赶。
- 相比 Python / Go / Java 等服务端语言,Node.js 复用前端 JavaScript 技能与 npm 工具链,适合 I/O 密集与实时场景;CPU 密集计算、强类型系统需求或特定企业中间件生态可能更适合其他语言。
- 边界说明:本仓库用于贡献 Node 核心或从源码构建;应用开发安装官方二进制或版本管理器即可,无需 clone 本 repo。
适应人群
- 用 JavaScript/TypeScript 构建 API、BFF、微服务或 Serverless 函数的后端与全栈工程师。
- 维护 npm 包、CLI 工具、前端构建链(Vite、Webpack 等)或需锁定 LTS 版本的企业技术负责人。
- 希望深入 V8、libuv、模块加载器或参与 Node 核心贡献的系统级开发者(需阅读 BUILDING.md)。
如何使用
前置条件
- 操作系统:macOS、Windows 10+、或主流 Linux 发行版(完整支持列表见 BUILDING.md)。
- 生产环境建议选用 LTS 版本;实验性功能使用 Current,Nightly 仅用于测试。
- 从源码构建需安装对应平台的编译工具链(Python、C/C++ 编译器等),复杂度远高于安装官方二进制。
安装方式
方式一:官网安装包(推荐大多数用户)
从 nodejs.org/en/download 下载对应平台的 LTS 安装包或二进制。
方式二:版本管理器(多版本切换)
# nvm(macOS / Linux)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bashnvm install --ltsnvm use --lts# Homebrew(macOS)brew install node# fnm(跨平台,速度快)curl -fsSL https://fnm.vercel.app/install | bashfnm install --ltsfnm use lts-latest更多安装选项与包管理器索引见 nodejs.org 下载页。
首次运行
node -vnpm -vnode -e "console.log('Hello, Node.js')"创建 hello.mjs 并运行:
console.log(`Node.js ${process.version} on ${process.platform}`);node hello.mjs验证是否成功
node -v输出预期版本号(生产环境应为 LTS,如v22.x或当前 LTS 线)。npm -v可正常输出版本,无权限或路径错误。- 运行
node -e "console.log('ok')"输出ok,无模块加载或动态链接错误。 - 查阅 API 文档 确认版本与本地安装一致。
常见坑 / 注意事项
- Current vs LTS:偶数大版本(如 20、22)为 LTS 线,企业生产应优先 LTS;Current 每 6 个月可能引入破坏性变更。
- 源码仓库 vs 日常使用:clone 本 repo 不等于「安装 Node」;贡献者需遵循 CONTRIBUTING.md,构建流程复杂。
- 原生模块编译:
node-gyp类依赖在 Windows 需 Visual Studio Build Tools,macOS 需 Xcode CLI,Linux 需build-essential。 - ESM 与 CommonJS:
"type": "module"与.mjs/.cjs扩展名影响import/require行为,混用时注意 模块文档。 - 中国大陆网络:npm 安装缓慢可配置镜像(如 npmmirror);Node 二进制亦可使用国内镜像站加速下载。