Node.js 的定义

官方定义

  1. Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.

译:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

  1. Node.js® is an open-source, cross-platform JavaScript runtime environment.

译:Node.js 是一个开源的,跨平台的 JavaScript 运行环境。

截于 23.05.14

民间定义

  • Node.js 是运行在服务端的 JavaScript。
  • Node.js 是一个开源和跨平台的 JavaScript 运行时环境。
  • Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎。

👆🏻 上面这些是网上大多数开发者对于 Node.js 是什么的回答。

错误的理解

听一些面试官来分享面试经历时,了解到不少面试者会误认为:

  • ❎ Node 是一门新语言
  • ❎ Node 是一个框架

上面这两种说法实际上都是错误的,按照官方的说法,它是 JavaScript 的一个运行时,也就是 JavaScript 的一个 宿主环境

宿主环境

宿主环境(Host Environment)是指在其中运行特定类型的代码的计算机环境或平台,例如Web浏览器、操作系统、服务器和移动设备。它提供了代码运行所需的基础设施和资源。

这里所说的宿主环境,其实就是 es 能够执行的环境,比如:

  • 「浏览器环境」
  • 「服务器环境」
  • 「桌面环境」
  • ……

宿主环境的作用是给语言「赋能」的,不同的宿主环境,给 es 提供的 api 不同,所以能够实现的功能也不相同。

赋能:拓展语言的功能。

  • es 语言本身,不带任何的输入输出语句,输入输出都是由宿主环境提供的 api 来实现的;
  • es 语言本身,不能写出个弹框,这也是基于宿主环境的 api 来实现的;
  • ……

类似于上面提到的这些功能,语言本身其实是不带有的,但是在不同的宿主环境下执行,调用宿主环境提供的对应的 api,就“拓展”了语言的功能。

对于不同的宿主环境,给语言赋予的能力也是不同的

  • 浏览器环境 下,es 能做的事儿是很受限的,比如「读写文件」的能力,浏览器就没有提供给 es
  • 但是在 服务器 环境下,es 能做的事儿就很多了,通过 node 环境,我们可以利用 es 直接操作我们的操作系统

Node.js 的别名

  • NodeJS
  • Node.js
  • node
  • node.js
  • nodejs
  • ……

它们表示的都是一个意思,只不过叫法不同罢了。

Node.js 的主要特点

  1. 事件驱动和非阻塞 I/O 模型
  2. 单线程
  3. 轻量和高效
  4. 跨平台
  5. 强大的模块生态系统
  6. 可扩展性和高并发处理能力

Node.js 的主要作用

  1. 服务器端应用程序开发
  2. API 开发和构建 Web 服务
  3. 实时应用程序开发
  4. 命令行工具和脚本开发
  5. 桌面应用程序开发

Node 适合用来 处理大量的 IO 操作,不适合用来做大规模的运算操作。Node 服务器,如果用于数据处理,通常仅会 做一些轻量级的运算