关于Node.Js

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具!

Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 的性能非常好。

Node.js 有以下特性:

  • 单进程运行,无需为每个请求创建新的线程。

  • 提供了一组异步的 I/O 原语,以防止 JavaScript 代码阻塞。当 Node.js 执行 I/O 操作时(比如从网络读取、访问数据库或文件系统),Node.js 将在响应返回时恢复操作(而不是阻塞线程和浪费 CPU 周期等待)。

  • 使用 JavaScript,可以编写除客户端代码之外的服务器端代码。

  • 支持新的 ECMAScript 标准。

一点历史

  • 2009: Node.js 诞生、第一版的 npm 被创建;

  • 2010: Express 诞生、Socket.io 诞生;

  • 2011: npm 发布 1.0 版本、较大的公司(LinkedIn、Uber 等)开始采用 Node.js、hapi 诞生;

  • 2012: 普及速度非常快;

  • 2013: 第一个使用 Node.js 的大型博客平台:Ghost、Koa 诞生;

  • 2014: 大分支:io.js 是 Node.js 的一个主要分支,目的是引入 ES6 支持并加快推进速度;

  • 2015: Node.js 基金会 诞生、IO.js 被合并回 Node.js、npm 引入私有模块、Node.js 4(以前从未发布过 1、2 和 3 版本);

  • 2016: leftpad 事件、Yarn 诞生、Node.js 6;

  • 2017: npm 更加注重安全性、Node.js 8、HTTP/2、V8 在其测试套件中引入了 Node.js,除了 Chrome 之外,Node.js 正式成为 ;JS 引擎的标杆、每周 30 亿次 npm 下载

  • 2018: Node.js 10、ES 模块 .mjs 实验支持、Node.js 11;

  • 2019: Node.js 12、Node.js 13;

  • 2020: Node.js 14、Node.js 15;

  • 2021: Node.js 16、Node.js 17;

Node.js 与浏览器的区别

浏览器和 Node.js 均使用 JavaScript 作为其编程语言,但构建运行于浏览器中的应用程序与构建 Node.js 应用程序完全不同。

Node.js 应用程序具有巨大的优势:使用单一语言轻松编程所有一切(前端和后端)。

在浏览器中,主要操作是与 DOM 或 Web 平台 API进行交互,但不存在文件系统访问等功能。

而在 Node.js 中,允许文件系统访问,并且可以选择不同的运行环境(不同版本的 Node.js),但它没有浏览器提供的 documentwindow、以及所有其他的对象。

JavaScript 发展的速度非常快,但是浏览器发展得慢一些,并且用户的升级速度也慢一些,因此有时在 web 上,不得不使用较旧的 JavaScript / ECMAScript 版本。而 Node.js 则不需要,它支持新的 ECMAScript 标准

另一个区别是:Node.js 使用 CommonJS 模块系统,而在浏览器中,则还正在实现 ES 模块标准,即,在 Node.js 中使用 require(),而在浏览器中则使用 import

V8 JavaScript 引擎

V8 是 Google Chrome 提供支持的 JavaScript 引擎的名称。 当使用 Chrome 进行浏览时,它负责处理并执行 JavaScript。

V8 提供了执行 JavaScript 的运行时环境。 DOM 和其他 Web 平台 API 则由浏览器提供。

JavaScript 引擎独立于托管它的浏览器。 此关键的特性推动了 Node.js 的兴起。 V8 于 2009 年被选为为 Node.js 提供支持的引擎,并且随着 Node.js 的爆炸性发展,V8 成为了现在为大量的服务器端代码(使用 JavaScript 编写)提供支持的引擎。

Node.js 的生态系统非常庞大,得益于此,V8 还为桌面应用程序(通过 Electron 等项目)提供支持。

V8 使用 C++ 编写,并且不断地被改进。 它是可移植的,且可运行于 Mac、Windows、Linux 和其他一些系统。

其他浏览器有自己的 JavaScript 引擎:

  • Firefox 具有 SpiderMonkey;

  • Safari 具有 JavaScriptCore(也称为 Nitro);

  • Edge 最初基于 Chakra,但最近使用 Chromium 和 V8 引擎重建。

环境变量

如何从 Node.js 读取环境变量

Node.js 的 process 核心模块提供了 env 属性,该属性承载了在启动进程时设置的所有环境变量。

process.env.NODE_ENV

Node.js 从命令行接收参数

node app.js joe // 独立参数
node app.js name=joe // 具有键和值

获取参数值的方法是使用 Node.js 中内置的 process 对象,其 argv 属性是一个包含所有命令行调用参数的数组。

argv 数组的第一个参数是 node 命令的完整路径;第二个参数是正被执行的文件的完整路径;所有其他的参数从第三个位置开始。

const args = process.argv.slice(2)
args[0]

Node.js资料

Node.js 中文网 - 入门教程

Node.js 中文网 - API文档

https://www.nodeapp.cn/

API Reference Document - nodejs

最后更新于