Chrome V8 执行 JavaScript 代码。Node.js 构建于 Chrome V8 之上,是一种广泛使用的针对无服务器 JavaScript 功能的运行时环境。但是,直接在 V8 上运行功能有很多优点。
阅读本文后,您将能够:
复制文章链接
Chrome V8 是 JavaScript 引擎,这意味着它执行 JavaScript 代码。最初,JavaScript 是为了在网络浏览器上执行而编写的。Chrome V8(或简称 V8)可以在浏览器内部或外部执行 JavaScript 代码,从而使服务器端脚本成为可能。
像 V8(八缸)汽车发动机一样,Chrome V8 快速而强大。V8 将 JavaScript 代码直接转换为机器代码*以便计算机能真正理解代码,然后执行转换或编译后的代码。V8 还优化了 JavaScript 执行。
*机器代码是 CPU 可理解的语言。它是纯数字的,意味着由数字组成。
编译是将代码从一种编程语言转换为另一种编程语言的过程。通常,编译器会将代码从较高的抽象级别转换为较低的抽象级别,比如从 JavaScript 等人类可用语言转换为机器可读代码。
Chrome V8 执行所谓的即时编译。它不预先编译 JavaScript,而是在执行代码的同时对其进行编译。
“沙箱”是执行软件的环境,它与其他环境(包括同一台计算机上的其他环境)隔离并区分开来。
沙箱是 Chrome V8 的一项关键功能。每个进程都经过沙箱化处理,以确保 JavaScript 功能在其上单独运行,并且执行一段代码时不会影响任何其他代码。(许多沙箱企业产品在隔离的虚拟机中打开并运行可执行文件,而 V8 沙箱技术与它们不同,不会降低性能。)
Node.js 是用于执行 JavaScript 代码的运行时环境*,基于 Chrome V8 引擎构建而成。它是异步的,这意味着它不必等待一个进程完成,即可启动另一个进程。与 V8 一样,Node.js 提供免费的开放源代码。与 V8 不同,它没有内置沙箱技术。
(熟悉 JavaScript 的人会注意到文件扩展名是 “.js”;不过,这只是通过一个美观的运行时环境名称表明其与 JavaScript 相关,并不表示 Node.js 是 JavaScript 文件。)
*运行时环境是在其中执行代码的软件环境。
无服务器功能需要通过某种方式,在受到触发时即开始执行。一些无服务器计算供应商提供 Node.js 作为无服务器 JavaScript 功能的运行时环境(针对其他语言使用其他运行时环境)。
但 Cloudflare Workers 直接在 V8 上运行。这有几个原因。原因之一是最近未使用过的功能的执行速度。冷启动在无服务器计算中是一个问题,但在 V8 上运行功能时,通常可以在 5 毫秒或更短的时间内“启动”并执行这些功能。(Node.js 的开销更大,通常会花费几毫秒的时间。)另一个原因是 V8 沙箱可以自动运行 JavaScript,从而提高安全性。