菜单

Node.js 概述

相关源文件

本文档全面概述了 Node.js 项目、其架构、治理结构和发布流程。它作为 Node.js 生态系统的介绍,并为理解代码库组织提供了基础。有关核心架构组件的具体细节,请参阅核心架构

什么是 Node.js

Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,基于 V8 JavaScript 引擎构建。它使开发人员能够使用 JavaScript 进行服务器端脚本编写,通过事件驱动的、非阻塞 I/O 模型创建可伸缩的网络应用程序。

Node.js 项目在 OpenJS 基金会的支持下,采用开放的治理模式。Node.js 的开发和维护通过一个协作过程进行,涉及技术指导委员会 (TSC)、协作者和更广泛的社区。

来源: README.md1-16

核心架构

Node.js 具有分层的架构,结合了原生组件和 JavaScript API。

高级架构图

来源: README.md1-8

关键组件

Node.js 由几个关键组件组成

  1. V8 JavaScript 引擎:Google 的开源 JavaScript 引擎,将 JavaScript 编译为原生机器码。
  2. libuv:一个跨平台的 C 库,提供事件循环、异步 I/O 和其他核心功能。
  3. 核心 C++ 绑定:连接 JavaScript 和底层操作系统的原生代码。
  4. JavaScript API 层:用于文件系统操作、网络、加密等的高级 API。

项目治理

Node.js 遵循一个明确的治理模型,拥有多层次的贡献者。

项目结构

来源: README.md148-149 doc/contributing/strategic-initiatives.md1-49

治理模型包括

  1. 技术指导委员会 (TSC):为项目提供技术领导和监督。
  2. 协作者:对仓库拥有直接提交权限的开发者。
  3. 分类员:协助管理 issue 和 pull request 的贡献者。
  4. 战略性举措:专注于特定改进领域的开发工作。

来源: README.md146-773

发布类型和生命周期

Node.js 提供不同的发布线来平衡创新与稳定性。

发布类型

发布类型描述支持生命周期
当前最新功能的活动开发分支10 月份的发布为期 8 个月,4 月份的发布将于 10 月份变为 LTS
LTS(长期支持)生产环境的稳定版本12 个月活跃 LTS + 18 个月维护
每夜构建当前分支的每日构建无官方支持

每个版本都遵循语义化版本控制(MAJOR.MINOR.PATCH)。LTS 版本会获得按字母顺序排列的代号(例如,Node.js 18 的代号为 Hydrogen)。

来源: README.md42-63

关键子系统

模块系统

Node.js 支持两种模块系统:CommonJS (CJS) 和 ECMAScript Modules (ESM)。

来源: README.md1-8

事件循环和 I/O 模型

Node.js 事件循环是实现非阻塞 I/O 操作的核心机制。

Node.js 利用 libuv 在不同操作系统上处理异步操作,提供与底层平台无关的一致 API。

来源: README.md1-8

核心 API

Node.js 为不同的功能领域提供了几个核心 API

API 类别核心模块描述
文件系统fs, path文件和目录操作
网络net, http, https, dgramTCP/IP、HTTP 和 UDP 功能
分块处理数据
加密crypto, tls安全操作
缓冲区buffer二进制数据处理
事件events事件驱动架构基础
进程process当前进程信息和控制

来源: README.md1-8

安全和漏洞管理

Node.js 通过专门的漏洞处理流程认真对待安全问题。

安全流程包括

  1. 安全协调员:协调安全发布
  2. 漏洞评估:评估和分配严重性
  3. CVE 管理:请求和跟踪 CVE 标识符
  4. 发布计划:协调跨发布线的修复
  5. 公开披露:在修复可用后沟通漏洞

来源: doc/contributing/security-release-process.md1-250

构建系统和开发

Node.js 构建系统负责跨不同平台进行编译。

构建系统使用 GYP (Generate Your Projects) 根据项目的跨平台描述来创建特定于平台的构建文件。

来源: README.md129-133

文档和 API 稳定性

Node.js 提供全面的 API 文档,并带有稳定性索引,以帮助开发人员做出明智的决定。

稳定性级别描述建议
0 - 已弃用可能会发出警告,不保证向后兼容避免使用
1 - 实验性不受语义化版本控制的约束,可能会更改或删除谨慎使用,不推荐用于生产
2 - 稳定与 npm 生态系统的兼容性是重中之重可安全用于一般用途
3 - 旧版仍受语义化版本控制的约束,但未积极维护如果可能,请考虑替代方案

来源: doc/api/documentation.md16-64

结论

Node.js 是一个复杂的 JavaScript 运行时,具有分层的架构,结合了 C/C++ 组件和 JavaScript API。其治理模式、发布周期和开发流程旨在平衡创新与稳定性,使其适用于从小型脚本到企业级系统的各种应用。

Node.js 的模块化设计和事件驱动架构使开发人员能够构建高效、可伸缩的应用程序,而开放的治理模式则确保项目能够持续发展以满足用户需求。

有关特定组件的更详细信息,请参阅本 wiki 中的其他页面。