从Node.js的命名上可以看到,Node.js的官方开发语言是JavaScript。之所以选择使用JavaScript,显然与JavaScript的开发人员有关。众所周知,JavaScript是伴随着互联网发展而火爆起来的,JavaScript也是前端开发人员必备的技能。同时,JavaScript也是浏览器能直接运行的脚本语言。
但也正是JavaScript在浏览器端的强势,导致人们对于JavaScript的印象还停留在小脚本的角色,认为JavaScript只能干点前端展示的简单活。
直到Chrome V8引擎(https://v8.dev/)的出现,让JavaScript彻底翻了身。Chrome V8是JavaScript渲染引擎,第一个版本随着Chrome浏览器的发布而发布(具体时间为2008年9月2日)。在运行JavaScript之前,相比其他的JavaScript的引擎转换成字节码或解释执行,Chrome V8将其编译成原生机器码(IA-32、x86-64、ARM或MIPS CPUs),并且使用了如内联缓存等方法来提高性能。Chrome V8可以独立运行,也可以嵌入到C++应用程序中运行。
随着Chrome V8引擎的声名鹊起,在2009年,Ryan Dahl正式推出了基于JavaScript和Chrome V8引擎的开源Web服务器项目,命名为Node.js。这使得JavaScript终于能够在服务器端拥有了一席之地。Node.js采用事件驱动和非阻塞I/O模型,使其变得轻微和高效,非常适合构建运行在分布式设备的数据密集型实时应用。从此,JavaScript成为从前端到后端再到数据库层能够支持全栈开发的语言。
Node. js能够火爆的另外一个原因是npm包管理工具的应用。npm可以轻松管理项目依赖,同时也促进了Node.js生态圈的繁荣,因为npm让开发人员分享开源技术变得不再困难。
以下列举了Node.js的大事件。
·2009年3月,Ryan Dahl正式推出Node.js。
·2009年10月,Isaac Schlueter首次提出了npm。
·2009年11月,Ryan Dahl首次公开宣讲Node.js。
·2010年3月,Web服务器框架Express.js问世。
·2010年3月,Socket.io第一版发布。
·2010年4月,Heroku首次实验性尝试对Node.js进行支持。
·2010年7月,Ryan Dahl在Google技术交流会上再次宣讲Node.js。
·2010年8月,Node.js 0.2.0发布。
·2010年年底,Node.js项目受到了Joyent公司的赞助,Ryan Dahl也加入到了Joyent公司负责Node.js的全职开发。
·2011年3月,Felix的Node.js指南发布。
·2011年5月,npm 1.0发布。
·2011年5月,Ryan Dahl在Reddit发帖接受任何关于Node.js的提问。
·2011年8月,LinkedIn产品在线上开始使用Node.js。
·2011年12月,Uber线上开始使用Node.js。
·2012年1月,Ryan Dahl宣布不再参与Node.js日常开发和维护工作,Isaac Schlueter接任。
·2012年6月,Node.js v0.8.0稳定版发布。
·2012年12月,Hapi.js框架发布。
·2013年4月,用Node.js开发的Ghost博客平台发布。
·2013年4月,著名的MEAN技术栈被提出 。
·2013年5月,eBay分享首次尝试使用Node.js开发应用的经验。
·2013年11月,沃尔玛线上用Node.js过程中发现了Node.js内存泄漏问题。
·2013年11月,PayPal发布一个Node.js的框架Kraken。
·2013年12月,著名的Koa框架发布。
·2014年1月,T.J.Fontaine接管了Node.js项目。
·2014年10月,Joyent和社区成员提议成立Node.js顾问委员会。
·2014年11月,多位重量级Node.js开发者不满Joyent对Node.js的管理,创建了Node.js的分支项目io.js。
·2015年1月,io.js发布1.0.0版本。
·2015年2月,Joyent携手各大公司和Linux基金会成立Node.js基金会,并提议io.js和Node.js和解。
·2015年4月,npm支持私有模块。
·2015年5月,T.J.Fontaine不再管理Node.js并离开Joyent公司。
·2015年5月,Node.js和io.js合并,隶属Node.js基金会。
·2015年9月8日,Node.js 4.0.0发布。Node.js没有经历1.0、2.0和3.0版本,就直接从4.0开始了,这也预示着Node.js迎来了一个新的时代。
·2015年10月29日,Node.js 5.0.0发布。
·2016年2月,Express作为Node.js基金会的孵化项目。
·2016年3月,爆发著名的left-pad事件。
·2016年3月,Google Cloud平台加入了Node.js基金会。
·2016年4月26日,Node.js 6.0.0发布。
·2016年10月,Yarn包管理器发布。
·2016年10月25日,Node.js 7.0.0发布。
·2017年9月,NASA的Node.js案例研究发布。
·2017年5月30日,Node.js 8.0.0发布。
·2017年10月31日,Node.js 9.0.0发布。
·2018年4月24日,Node.js 10.0.0发布。
·2018年10月23日,Node.js 11.0.0发布。
·2019年3月13日,Node.js基金会和JS基金会合并成了OpenJS基金会,以促进JavaScript和Web生态系统的健康发展。
·2019年4月23日,Node.js 12.0.0发布。
·2019年10月22日,Node.js 13.0.0发布。
·2020年4月22日,Node.js 14.0.0发布。
读者可能会好奇,Node.js为什么要这么命名。其实,一开始Ryan Dahl将他的项目命名为Web.js,致力于构建高性能的Web服务。但是随着项目的发展超出了他最初的预期,项目演变成为构建网络应用的一个基础框架。
在大型分布式系统中,“节点”在英文中翻译为“node”,它是用于构建整个系统的独立单元。因此,Ryan Dahl将他的项目命名为了Node.js,期望用于快速构建大型应用系统。