回顾一下从2009年至今的Node.js的历史
信不信由你,Node.js仅仅只有9年的历史。
相比之下,JavaScript已有23年的历史了,而我们所知道的网络(在Mosaic引入之后)已有25年的历史了。
9年对于技术来说是很少的时间,但是Node.js似乎永远存在。
从成立仅2年的早期开始,我就很高兴与Node一起工作,尽管可以获得的信息很少,但是您已经可以感觉到这是一件大事。
在这篇文章中,我想勾勒出Node历史上的全景图,以便对事物进行透视。
一点历史
JavaScript是一种在Netscape中创建的编程语言,它是一种脚本工具,用于在其浏览器中操纵网页,Netscape导航器。
Netscape的业务模型的一部分是出售Web服务器,其中包括一个称为网景LiveWire,可以使用服务器端JavaScript创建动态页面。因此,Node.js并未引入服务器端JavaScript的想法,但是它像JavaScript一样古老-但是当时还没有成功。
导致Node.js兴起的一个关键因素是计时。几年以来,JavaScript开始被认为是一种严肃的语言,这要感谢“ Web 2.0”应用程序,该应用程序向世界展示了Web上的现代体验(例如Google Maps或GMail)。
由于浏览器竞争的激烈,JavaScript引擎的性能标准大为提高,但该竞争仍在继续。每个主要浏览器背后的开发团队每天都在努力工作,以为我们提供更好的性能,这对于JavaScript作为平台是一个巨大的胜利。 Node.js在后台使用的V8引擎就是其中之一,尤其是Chrome JS引擎。
但是,当然,仅由于运气或时机原因,Node.js并不流行。它引入了关于如何在服务器上使用JavaScript编程的许多创新思想。
2009
- Node.js诞生了
- 第一种形式npm被建造
2010
2011
- npm达到1.0
- 大公司开始采用Node:LinkedIn,Uber哈皮出生
2012
- 采纳非常迅速
2013
- 第一个使用Node:Ghost的大型博客平台
- 考阿出生
2014
- 大叉子:io.js是Node.js的主要分支,目的是引入ES6支持并加快迁移速度
2015
- 这Node.js基础出生
- IO.js合并回Node.js
- npm引入了私有模块
- Node 4 (no 1, 2, 3 versions were previously released)
2016
2017
- npm更加注重安全性
- 节点8-9
- HTTP/2
- V8在其测试套件中引入了Node,除了Chrome之外,还正式使Node成为JS引擎的目标
- 每周有30亿次npm下载
2018
- 节点10-11
- ES模块.mjs实验支持
2019
- 节点12-13
- 从事于Deno开始通过现代JavaScript支持将服务器端JS迁移到下一个十年
2020
- 节点14-15
- GitHub(微软所有)收购NPM
免费下载我的Node.js手册
更多节点教程:
- npm软件包管理器简介
- Node.js简介
- 使用Axios的HTTP请求
- 在哪里托管Node.js应用
- 使用Node.js与Google Analytics(分析)API进行交互
- npx节点包运行器
- package.json指南
- npm在哪里安装软件包?
- 如何更新Node.js
- 如何使用或执行使用npm安装的软件包
- package-lock.json文件
- 使用npm的语义版本控制
- 您是否应该将node_modules文件夹提交到Git?
- 将所有Node依赖项更新到最新版本
- 使用Node.js解析JSON
- 查找npm软件包的安装版本
- Node.js流
- 安装较旧版本的npm软件包
- 在Node中获取当前文件夹
- 如何在Node中记录对象
- 使用导出从Node文件公开功能
- 节点和浏览器之间的区别
- 使用Node发出HTTP POST请求
- 使用Node获取HTTP请求主体数据
- 节点缓冲区
- Node.js的简要历史
- 如何安装Node.js
- 使用Node您需要知道多少JavaScript?
- 如何使用Node.js REPL
- 节点,从命令行接受参数
- 使用Node输出到命令行
- 接受来自Node中命令行的输入
- 使用`npm uninstall`来卸载npm软件包。
- npm全局或本地软件包
- npm依赖项和devDependencies
- Node.js事件循环
- 了解process.nextTick()
- 了解setImmediate()
- 节点事件发射器
- 建立一个HTTP服务器
- 使用Node发出HTTP请求
- Node fs模块
- 使用Axios的Node中的HTTP请求
- 使用Node读取文件
- 节点文件路径
- 用Node写入文件
- 节点文件统计
- 在Node中使用文件描述符
- 在Node中使用文件夹
- 节点路径模块
- Node http模块
- 将WebSockets与Node.js结合使用
- 使用MySQL和Node的基础知识
- Node.js中的错误处理
- 哈巴狗指南
- 如何从Node.js读取环境变量
- 如何从Node.js程序退出
- Node os模块
- 节点事件模块
- 节点,开发与生产之间的区别
- 如何检查Node.js中是否存在文件
- 如何在Node.js中创建一个空文件
- 如何使用Node.js删除文件
- 如何使用Node.js获取文件的最后更新日期
- 如何在JavaScript中确定日期是否为今天
- 如何将JSON对象写入Node.js中的文件
- 为什么要在下一个项目中使用Node.js?
- 从任何文件夹运行Web服务器
- 如何将MongoDB与Node.js结合使用
- 使用Chrome DevTools调试Node.js应用
- 什么是pnpm?
- Node.js运行时v8选项列表
- 使用npm时如何解决“缺少写访问权限”错误
- 如何在Node.js中启用ES模块
- 如何使用Node.js生成子进程
- 如何在Express中同时获取已解析的正文和原始正文
- 如何在Node.js中处理文件上传
- 节点模块中的对等依赖性是什么?
- 如何使用Node.js编写CSV文件
- 如何使用Node.js读取CSV文件
- 节点核心模块
- 使用Node.js一次增加多个文件夹的数量
- 如何将画布打印到数据URL
- 如何使用Node.js和Canvas创建和保存图像
- 如何使用Node.js下载图像
- 如何在Node.js中批量重命名文件
- 如何获取Node中文件夹中所有文件的名称
- 如何使用Promise和基于Node.js回调的等待功能
- 如何在本地测试NPM软件包
- 如何在运行时检查当前的Node.js版本
- 如何使用Sequelize与PostgreSQL交互
- 使用Node.js服务HTML页面
- 如何解决Node.js中的util.pump不是函数错误