Node:是一个基于 V8 引擎的 JavaScript 运行的环境。
V8 引擎可以嵌入到任何 C++ 应用程序中,无论是 Chrome 浏览器还是 Node,事实上都是嵌入了 V8 引擎来执行 JavaScript 代码的。
Node 架构:
- 编写的 JavaScript 代码首先经过 V8 引擎进行翻译。
- 然后由 Node 绑定到 libuv,由 libuv 绑定操作系统中的某个操作,去调用执行。
- 执行成功后,经过事件循环,将回调函数加入到任务队列中。
- 然后由 Node 绑定到 V8 引擎中,由 V8 引擎来执行相应的 JavaScript 代码。
Node 和浏览器架构的区别:
在 Node 中,除了使用 V8 引擎来运行 JavaScript 代码,还包含有其他的程序来进行系统层面的一些操作,例如文件系统读写、网络 IO、加密、压缩/解压文件等。
在 Chrome 浏览器中, 除了使用 V8 引擎来运行 JavaScript 代码外,还包含有解析、渲染 HTML、CSS 等的相关渲染引擎,另外还包含有支持浏览器操作的 API、浏览器的事件循环等。
在 Node 中,提供给 JS 调用的 API 是用 JS 编写的,V8 引擎是用 C++ 编写的,用来调用操作系统的 libuv 是用 C 语言编写的,因此,严格来说,Node 程序是用 JS/C++/C 语言编写的。
Node 的应用场景:
- 目前前端开发的库,都是以 node 包的形式进行管理的。
- 越来越多的公司使用 Node 来进行 Web 服务器、中间件、代理服务器开发。
- 大量项目需要借助 Node 完成前后端渲染的同构应用。
- 资深前端工程师需要为项目编写脚本工具。
- 很多企业在使用 Electron(基于 Node 来运行)来开发桌面应用程序。
安装 Node:
- 在官网
https://nodejs.org/en
中,下载对应系统的 node 安装包。 - 双击 node 安装包进行安装,安装成功后就可以使用 Node 了。
使用 Node 运行 JavaScript 文件:
- 新建一个
test.js
文件,并编写一些代码。 - 在命令行中进入该文件所在的文件夹,输入
node test.js
,即可使用 Node 来运行该 JavaScript 文件。
Node 的 REPL:
REPL 是一个简单的、交互式的编程环境。
Node 提供了一个 REPL 环境,可以在其中演练简单的代码。在命令行中输入 node
即可进入 REPL 环境,输入 .exit
即可退出 REPL 环境。
浏览器的 console 就可以看成是一个 REPL。
Node 的输出和输入:
输出:
- 在 JavaScript 文件中可以使用 console 打印内容,通过 Node 运行 JavaScript 文件后即可看到输出的结果。
输入:
- 通过 Node 运行 JavaScript 文件时,可以在后面以空格隔开输入内容;在 JavaScript 文件中即可通过 process 内置对象的 argv 属性即可查看到输入的内容。
可以看到,打印process.argv
,输入的是一个数组,第一项是 Node 所在的位置,第二项是 JavaScript 文件所在的位置,后面项就是输入的内容。