- Node.js 官网:https://nodejs.org/en/
Node.js 的定义
官方定义
- Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
译:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
- Node.js® is an open-source, cross-platform JavaScript runtime environment.
译:Node.js 是一个开源的,跨平台的 JavaScript 运行环境。
民间定义
- 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 的主要特点
- 事件驱动和非阻塞 I/O 模型
- 单线程
- 轻量和高效
- 跨平台
- 强大的模块生态系统
- 可扩展性和高并发处理能力
Node.js 的主要作用
- 服务器端应用程序开发
- API 开发和构建 Web 服务
- 实时应用程序开发
- 命令行工具和脚本开发
- 桌面应用程序开发
Node 适合用来 处理大量的 IO 操作,不适合用来做大规模的运算操作。Node 服务器,如果用于数据处理,通常仅会 做一些轻量级的运算。