Node.js V8运行时与Chrome控制台有何区别

Node.js V8运行时与Chrome控制台有何区别

NodeJS 是一个开源的跨平台JavaScript运行环境,用于在浏览器之外运行JavaScript。它可用于构建各种软件,包括后端服务器、脚本、命令行工具、游戏、本地应用程序等。NodeJS是单线程的,我们主要用它来构建非阻塞、事件驱动的服务器。它是建立在由谷歌开发的V8引擎之上的。V8也用于在Google Chrome控制台内运行JavaScript

是的, NodeJSChrome 都使用相同的V8引擎来执行JavaScript。然而,它们在执行方式上存在一些差异。

V8引擎概述: V8是由谷歌开发的用C++编写的高性能JavaScript引擎。它用于Chrome和NodeJS。基本上,V8将JavaScript代码转换为计算机可执行的机器码。

V8引擎模型:

Node.js V8运行时与Chrome控制台有何区别

上面的图片显示了源代码如何转换为机器码。这个过程分为以下步骤:

  1. 源代码被传递给引擎。
  2. 基准编译器负责将源代码转换为未优化的字节码(以便字节码能够快速生成,程序能够快速启动)。
  3. 第2步生成的字节码现在由解释器解释,并转换为机器码,即机器可以执行的代码。
  4. TurboFan优化编译器接收字节码,并生成一个优化的机器码,取代未优化的机器码。这样有助于创建高效的机器码。随着时间的推移,字节码由TurboFan编译器完全优化,这个过程在后台完成,不会干扰基准编译器和解释器。

NodeJS V8运行时与Chrome控制台有什么不同?

显然,NodeJS和Chrome控制台都使用了相同的V8 JavaScript引擎。NodeJS的目的是使JavaScript在本地机器上执行,而不需要浏览器。它们都遵循如上所述的相同执行过程。

然而,由于两个环境不同,Chrome和NodeJS中运行的JavaScript存在一些差异。

  1. 系统访问: NodeJS在机器上运行,因此它可以完全访问操作系统,这意味着它可以直接读取、写入文件数据以及执行许多其他操作。NodeJS还可以使用像electron.js这样的框架创建桌面应用程序。Chrome控制台对系统的访问权限有限,因为它是在浏览器内部运行的。它无法像NodeJS那样执行操作。
  2. 模块系统: 在NodeJS中,一切都被保存在模块中,并且使用模块之间传递数据。但是,在Chrome中,这并不是强制性的。
  3. 两个生态系统中缺少的对象: NodeJS没有document、window或location对象,因为它没有窗口或DOM可供操作。同样,Chrome也无法访问全局对象和模块,如fs、path等。
  4. GUI与无界面: Chrome具有图形用户界面(GUI),而NodeJS是无界面的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程