跳转到内容

Node.js:修订间差异

轻之舟百科,让知识轻装启航
CaelLab​(留言 | 贡献)
创建页面,内容为“Node.js(全称:Node.js,官方通常简称为 Node)是一个基于 Google Chrome V8 引擎构建的 JavaScript 运行时环境,由瑞安·达尔(Ryan Dahl)于 2009 年创立<ref name=":0">[https://www.infoq.cn/article/what-is-nodejs InfoQ]</ref>。它采用事件驱动、非阻塞 I/O 模型,使 JavaScript 能够在浏览器之外的服务器端运行,广泛应用于 Web 服务器、实时应用、命令行工具及物联网开发<ref name=":1"…”
 
无编辑摘要
标签:移动版编辑 移动版网页编辑
 
第1行: 第1行:
Node.js(全称:Node.js,官方通常简称为 Node)是一个基于 Google Chrome V8 引擎构建的 JavaScript 运行时环境,由瑞安·达尔(Ryan Dahl)于 2009 年创立<ref name=":0">[https://www.infoq.cn/article/what-is-nodejs InfoQ]</ref>。它采用事件驱动、非阻塞 I/O 模型,使 JavaScript 能够在浏览器之外的服务器端运行,广泛应用于 Web 服务器、实时应用、命令行工具及物联网开发<ref name=":1">[https://cloud.tencent.com/developer/article/1739271 腾讯云开发者社区]</ref>。自 2009 年 5 月在 GitHub 上发布首个版本以来,Node.js 经历了从个人项目到企业资助、社区分裂再到基金会治理的发展历程,现由 Node.js 基金会推动其开放治理与标准化演进<ref name=":2">[https://cloud.tencent.com/developer/article/1456827 腾讯云开发者社区]</ref>。
Node.js(全称:Node.js,官方通常简称为 Node)是一个基于 [[Google Chrome]] V8 引擎构建的 [[JavaScript]] 运行时环境,由瑞安·达尔(Ryan Dahl)于 2009 年创立<ref name=":0">[https://www.infoq.cn/article/what-is-nodejs InfoQ]</ref>。它采用事件驱动、非阻塞 I/O 模型,使 JavaScript 能够在浏览器之外的服务器端运行,广泛应用于 Web 服务器、实时应用、命令行工具及物联网开发<ref name=":1">[https://cloud.tencent.com/developer/article/1739271 腾讯云开发者社区]</ref>。自 2009 年 5 月在 [[GitHub]] 上发布首个版本以来,Node.js 经历了从个人项目到企业资助、社区分裂再到基金会治理的发展历程,现由 Node.js 基金会推动其开放治理与标准化演进<ref name=":2">[https://cloud.tencent.com/developer/article/1456827 腾讯云开发者社区]</ref>。


{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;"
{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;"
第15行: 第15行:
| 稳定版本 || 持续更新(LTS 策略)
| 稳定版本 || 持续更新(LTS 策略)
|-
|-
| 编程语言 || C++、JavaScript
| 编程语言 || [[C++]]、[[JavaScript]]
|-
|-
| 运行平台 || 跨平台(Linux、macOS、Windows 等)
| 运行平台 || 跨平台(Linux、macOS、Windows 等)
第28行: 第28行:
=== 定义与性质 ===
=== 定义与性质 ===


Node.js 并非 JavaScript 应用或框架,而是一个使 JavaScript 脱离浏览器约束、在通用服务器环境下运行的平台<ref name=":0" />。它基于 C++ 语言编写,核心集成了 Google Chrome 的 V8 JavaScript 引擎,负责解析与执行 JavaScript 代码<ref name=":1" />。Node.js 采用单线程事件循环架构,配合非阻塞 I/O 操作,能够在不创建额外线程的情况下处理大量并发连接<ref name=":3">[https://www.ayqy.net/blog/node-js%E5%8F%91%E5%B1%95%E5%8F%B2/ 黯羽轻扬]</ref>。
Node.js 并非 JavaScript 应用或框架,而是一个使 JavaScript 脱离浏览器约束、在通用服务器环境下运行的平台<ref name=":0" />。它基于 [[C++]] 语言编写,核心集成了 [[Google Chrome]] 的 V8 [[JavaScript]] 引擎,负责解析与执行 [[JavaScript]] 代码<ref name=":1" />。Node.js 采用单线程事件循环架构,配合非阻塞 I/O 操作,能够在不创建额外线程的情况下处理大量并发连接<ref name=":3">[https://www.ayqy.net/blog/node-js%E5%8F%91%E5%B1%95%E5%8F%B2/ 黯羽轻扬]</ref>。


=== 功能与定位 ===
=== 功能与定位 ===
第70行: 第70行:
=== Node.js 基金会 ===
=== Node.js 基金会 ===


2015 年,在 Linux 基金会支持下,Joyent、IBM、微软、PayPal 等企业联合成立 Node.js 基金会,标志着项目治理从单一企业控制转向社区驱动的开放模式<ref name=":2" />。基金会设立技术指导委员会(TSC)与社区委员会,负责项目技术方向与社区治理,推动 Node.js 进入稳定的标准化演进阶段<ref name=":2" />。
2015 年,在 [[Linux]] 基金会支持下,Joyent、IBM、[[微软]]、PayPal 等企业联合成立 Node.js 基金会,标志着项目治理从单一企业控制转向社区驱动的开放模式<ref name=":2" />。基金会设立技术指导委员会(TSC)与社区委员会,负责项目技术方向与社区治理,推动 Node.js 进入稳定的标准化演进阶段<ref name=":2" />。


== 版本沿革 ==
== 版本沿革 ==

2026年7月11日 (六) 10:07的最新版本

Node.js(全称:Node.js,官方通常简称为 Node)是一个基于 Google Chrome V8 引擎构建的 JavaScript 运行时环境,由瑞安·达尔(Ryan Dahl)于 2009 年创立[1]。它采用事件驱动、非阻塞 I/O 模型,使 JavaScript 能够在浏览器之外的服务器端运行,广泛应用于 Web 服务器、实时应用、命令行工具及物联网开发[2]。自 2009 年 5 月在 GitHub 上发布首个版本以来,Node.js 经历了从个人项目到企业资助、社区分裂再到基金会治理的发展历程,现由 Node.js 基金会推动其开放治理与标准化演进[3]。

Node.js
中文名 Node.js
英文名 Node.js
创始人 瑞安·达尔(Ryan Dahl)
初始发布 2009 年 5 月(GitHub)
稳定版本 持续更新(LTS 策略)
编程语言 C++、JavaScript
运行平台 跨平台(Linux、macOS、Windows 等)
许可协议 MIT 许可证
官方网站 https://nodejs.org/

定义与性质

[编辑 | 编辑源代码]

Node.js 并非 JavaScript 应用或框架,而是一个使 JavaScript 脱离浏览器约束、在通用服务器环境下运行的平台[1]。它基于 C++ 语言编写,核心集成了 Google Chrome 的 V8 JavaScript 引擎,负责解析与执行 JavaScript 代码[2]。Node.js 采用单线程事件循环架构,配合非阻塞 I/O 操作,能够在不创建额外线程的情况下处理大量并发连接[4]。

功能与定位

[编辑 | 编辑源代码]

作为服务端 JavaScript 运行环境,Node.js 使开发者能够使用统一的语言进行前后端开发。它内置文件系统、网络编程等系统级 API,弥补了浏览器端 JavaScript 受安全沙箱限制的功能短板[1]。配合 npm(Node Package Manager)包管理器,Node.js 形成了庞大的模块生态系统,涵盖 Web 框架、数据库驱动、构建工具等数万个第三方模块[5]。

起源与早期发展

[编辑 | 编辑源代码]

2009 年 2 月,Ryan Dahl 在博客上宣布基于 V8 引擎创建轻量级 Web 服务器及配套库,并于同年 5 月在 GitHub 上发布 Node.js 的最初版本[1]。2009 年 11 月,Ryan Dahl 在柏林 JSConf EU 会议上发表首次公开演讲,Node.js 开始受到技术社区关注[2][4]。2010 年底,云计算服务商 Joyent 开始资助 Node.js 项目,Ryan Dahl 加入 Joyent 全职负责开发[1][5]。

生态成熟与治理变迁

[编辑 | 编辑源代码]

2010 年,npm 包管理器由 Isaac Z. Schlueter 创建并发布,随后集成至 Node.js 安装包,成为模块管理的事实标准[5]。2011 年 7 月,在微软支持下,Node.js 发布首个 Windows 移植版本[1]。2012 年 1 月,Ryan Dahl 将项目领导权移交予 Isaac Schlueter,后者于 2014 年 1 月转交 Timothy J. Fontaine[5]。

io.js 分裂与合并

[编辑 | 编辑源代码]

由于 Joyent 对项目治理的干预及版本发布迟缓,2014 年 8 月,以 Mikeal Rogers 为首的核心贡献者发起 io.js 分支,采用开放技术委员会治理模式,并以周为单位快速迭代版本[2][4]。2015 年,Joyent 联合 IBM、微软、PayPal 等企业成立 Node.js 基金会,采纳开放治理模式;随后 io.js 社区与 Node.js 和解,io.js 代码合并回 Node.js 主线,版本号从 4.0 开始延续[3][4]。

技术特征

[编辑 | 编辑源代码]

事件驱动与非阻塞 I/O

[编辑 | 编辑源代码]

Node.js 的核心架构围绕事件循环(Event Loop)构建。当发生文件或网络 I/O 操作时,Node.js 注册回调函数并立即释放线程处理后续请求,待 I/O 完成后通过事件触发回调响应[2]。这种非阻塞设计使其在 I/O 密集型场景中能够以较低资源消耗处理高并发请求,与传统多线程模型形成显著差异[6]。

V8 引擎集成

[编辑 | 编辑源代码]

Node.js 内置 Google Chrome 的 V8 JavaScript 引擎。V8 由 Lars Bak 团队开发,2008 年 9 月随 Chrome 浏览器一同开源,其革命性在于将 JavaScript 源码预编译为机器码而非传统字节码,显著提升了执行效率[2]。Ryan Dahl 选择 V8 正是基于其无历史包袱、高性能及 JavaScript 闭包特性适合回调机制等优势[2][5]。

模块与包管理

[编辑 | 编辑源代码]

Node.js 采用 CommonJS 模块规范,通过 require 机制实现代码复用与依赖管理。npm 作为官方包管理工具,提供模块发布、安装与版本管理功能,形成了全球最大的开源软件注册表之一[5][4]。

标准组织

[编辑 | 编辑源代码]

Joyent 时期

[编辑 | 编辑源代码]

2010 年至 2015 年间,Node.js 由 Joyent 公司提供企业资助与商标管理。此阶段项目采用“Gatekeeper”技术负责人模式,历任负责人包括 Ryan Dahl、Isaac Schlueter 及 Timothy J. Fontaine[2][5]。

Node.js 基金会

[编辑 | 编辑源代码]

2015 年,在 Linux 基金会支持下,Joyent、IBM、微软、PayPal 等企业联合成立 Node.js 基金会,标志着项目治理从单一企业控制转向社区驱动的开放模式[3]。基金会设立技术指导委员会(TSC)与社区委员会,负责项目技术方向与社区治理,推动 Node.js 进入稳定的标准化演进阶段[3]。

版本沿革

[编辑 | 编辑源代码]

Node.js 的版本发布经历了从个人主导到基金会治理的转变:

  • 0.1.x–0.12.x:2009 年至 2015 年的快速迭代期,由 Ryan Dahl 及后续负责人主导,奠定事件驱动架构与 npm 生态基础[4]。
  • 4.x:2015 年 9 月发布,io.js 合并后的首个稳定版本,引入 ES6 支持并开启 Node.js 基金会治理时代[3][7]。
  • 6.x:2016 年 4 月发布,全面支持 ES6,提升性能与安全性[7]。
  • 8.x:2017 年 5 月发布,引入 Async/Await、HTTP/2 支持及 V8 引擎升级[7]。
  • 10.x:2018 年 4 月发布,提供 ES 模块(.mjs)实验性支持[7]。
  • 12.x 及以后:2019 年起持续迭代,定期发布 LTS(长期支持)版本与 Current 版本,保持与 V8 引擎及 ECMAScript 标准的同步更新[7]。

参考文献

[编辑 | 编辑源代码]