Node.js:修订间差异
TeodoroSeccombe(留言 | 贡献) 小 创建页面,内容为“。” |
无编辑摘要 标签:移动版编辑 移动版网页编辑 |
||
| 第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>。 | |||
= | {| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;" | ||
|- | |||
! colspan="2" style="text-align:center;" | '''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 脱离浏览器约束、在通用服务器环境下运行的平台<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>。 | |||
=== | === 功能与定位 === | ||
作为服务端 JavaScript 运行环境,Node.js 使开发者能够使用统一的语言进行前后端开发。它内置文件系统、网络编程等系统级 API,弥补了浏览器端 JavaScript 受安全沙箱限制的功能短板<ref name=":0" />。配合 npm(Node Package Manager)包管理器,Node.js 形成了庞大的模块生态系统,涵盖 Web 框架、数据库驱动、构建工具等数万个第三方模块<ref name=":4">[https://www.cnblogs.com/ifantastic/p/3774545.html 博客园]</ref>。 | |||
== 历史 == | |||
== | === 起源与早期发展 === | ||
2009 年 2 月,Ryan Dahl 在博客上宣布基于 V8 引擎创建轻量级 Web 服务器及配套库,并于同年 5 月在 GitHub 上发布 Node.js 的最初版本<ref name=":0" />。2009 年 11 月,Ryan Dahl 在柏林 JSConf EU 会议上发表首次公开演讲,Node.js 开始受到技术社区关注<ref name=":1" /><ref name=":3" />。2010 年底,云计算服务商 Joyent 开始资助 Node.js 项目,Ryan Dahl 加入 Joyent 全职负责开发<ref name=":0" /><ref name=":4" />。 | |||
== | === 生态成熟与治理变迁 === | ||
2010 年,npm 包管理器由 Isaac Z. Schlueter 创建并发布,随后集成至 Node.js 安装包,成为模块管理的事实标准<ref name=":4" />。2011 年 7 月,在微软支持下,Node.js 发布首个 Windows 移植版本<ref name=":0" />。2012 年 1 月,Ryan Dahl 将项目领导权移交予 Isaac Schlueter,后者于 2014 年 1 月转交 Timothy J. Fontaine<ref name=":4" />。 | |||
== | === io.js 分裂与合并 === | ||
由于 Joyent 对项目治理的干预及版本发布迟缓,2014 年 8 月,以 Mikeal Rogers 为首的核心贡献者发起 io.js 分支,采用开放技术委员会治理模式,并以周为单位快速迭代版本<ref name=":1" /><ref name=":3" />。2015 年,Joyent 联合 IBM、微软、PayPal 等企业成立 Node.js 基金会,采纳开放治理模式;随后 io.js 社区与 Node.js 和解,io.js 代码合并回 Node.js 主线,版本号从 4.0 开始延续<ref name=":2" /><ref name=":3" />。 | |||
* ''' | |||
* '''入 | == 技术特征 == | ||
=== 事件驱动与非阻塞 I/O === | |||
Node.js 的核心架构围绕事件循环(Event Loop)构建。当发生文件或网络 I/O 操作时,Node.js 注册回调函数并立即释放线程处理后续请求,待 I/O 完成后通过事件触发回调响应<ref name=":1" />。这种非阻塞设计使其在 I/O 密集型场景中能够以较低资源消耗处理高并发请求,与传统多线程模型形成显著差异<ref name=":5">[https://juejin.cn/post/7253984472940675131 掘金]</ref>。 | |||
=== V8 引擎集成 === | |||
Node.js 内置 Google Chrome 的 V8 JavaScript 引擎。V8 由 Lars Bak 团队开发,2008 年 9 月随 Chrome 浏览器一同开源,其革命性在于将 JavaScript 源码预编译为机器码而非传统字节码,显著提升了执行效率<ref name=":1" />。Ryan Dahl 选择 V8 正是基于其无历史包袱、高性能及 JavaScript 闭包特性适合回调机制等优势<ref name=":1" /><ref name=":4" />。 | |||
=== 模块与包管理 === | |||
Node.js 采用 CommonJS 模块规范,通过 require 机制实现代码复用与依赖管理。npm 作为官方包管理工具,提供模块发布、安装与版本管理功能,形成了全球最大的开源软件注册表之一<ref name=":4" /><ref name=":3" />。 | |||
== 标准组织 == | |||
=== Joyent 时期 === | |||
2010 年至 2015 年间,Node.js 由 Joyent 公司提供企业资助与商标管理。此阶段项目采用“Gatekeeper”技术负责人模式,历任负责人包括 Ryan Dahl、Isaac Schlueter 及 Timothy J. Fontaine<ref name=":1" /><ref name=":4" />。 | |||
=== Node.js 基金会 === | |||
2015 年,在 [[Linux]] 基金会支持下,Joyent、IBM、[[微软]]、PayPal 等企业联合成立 Node.js 基金会,标志着项目治理从单一企业控制转向社区驱动的开放模式<ref name=":2" />。基金会设立技术指导委员会(TSC)与社区委员会,负责项目技术方向与社区治理,推动 Node.js 进入稳定的标准化演进阶段<ref name=":2" />。 | |||
== 版本沿革 == | |||
Node.js 的版本发布经历了从个人主导到基金会治理的转变: | |||
* '''0.1.x–0.12.x''':2009 年至 2015 年的快速迭代期,由 Ryan Dahl 及后续负责人主导,奠定事件驱动架构与 npm 生态基础<ref name=":3" />。 | |||
* '''4.x''':2015 年 9 月发布,io.js 合并后的首个稳定版本,引入 ES6 支持并开启 Node.js 基金会治理时代<ref name=":2" /><ref name=":6">[https://blog.csdn.net/baiduguoyun/article/details/143007314 CSDN]</ref>。 | |||
* '''6.x''':2016 年 4 月发布,全面支持 ES6,提升性能与安全性<ref name=":6" />。 | |||
* '''8.x''':2017 年 5 月发布,引入 Async/Await、HTTP/2 支持及 V8 引擎升级<ref name=":6" />。 | |||
* '''10.x''':2018 年 4 月发布,提供 ES 模块(.mjs)实验性支持<ref name=":6" />。 | |||
* '''12.x 及以后''':2019 年起持续迭代,定期发布 LTS(长期支持)版本与 Current 版本,保持与 V8 引擎及 ECMAScript 标准的同步更新<ref name=":6" />。 | |||
== 参考文献 == | == 参考文献 == | ||
<references /> | <references /> | ||