Chrome V8 是什么?

Chrome V8 执行 JavaScript 代码。Node.js 构建于 Chrome V8 之上,是一种广泛使用的针对无服务器 JavaScript 功能的运行时环境。但是,直接在 V8 上运行功能有很多优点。

学习目标

阅读本文后,您将能够:

  • 定义 JavaScript 引擎
  • 了解有关 Chrome V8 和 Node.js 的信息
  • 了解 Chrome V8 在无服务器架构中可起到的作用

复制文章链接

Chrome V8 是什么?

Chrome V8 是 JavaScript 引擎,这意味着它执行 JavaScript 代码。最初,JavaScript 是为了在网络浏览器上执行而编写的。Chrome V8(或简称 V8)可以在浏览器内部或外部执行 JavaScript 代码,从而使服务器端脚本成为可能。

像 V8(八缸)汽车发动机一样,Chrome V8 快速而强大。V8 将 JavaScript 代码直接转换为机器代码*以便计算机能真正理解代码,然后执行转换或编译后的代码。V8 还优化了 JavaScript 执行。

*机器代码是 CPU 可理解的语言。它是纯数字的,意味着由数字组成。

编译是什么意思?

编译是将代码从一种编程语言转换为另一种编程语言的过程。通常,编译器会将代码从较高的抽象级别转换为较低的抽象级别,比如从 JavaScript 等人类可用语言转换为机器可读代码。

Chrome V8 执行所谓的即时编译。它不预先编译 JavaScript,而是在执行代码的同时对其进行编译。

什么是沙箱技术?

Chrome V8 沙箱技术

“沙箱”是执行软件的环境,它与其他环境(包括同一台计算机上的其他环境)隔离并区分开来。

沙箱是 Chrome V8 的一项关键功能。每个进程都经过沙箱化处理,以确保 JavaScript 功能在其上单独运行,并且执行一段代码时不会影响任何其他代码。(许多沙箱企业产品在隔离的虚拟机中打开并运行可执行文件,而 V8 沙箱技术与它们不同,不会降低性能。)

什么是 Node.js?

Node.js 是用于执行 JavaScript 代码的运行时环境*,基于 Chrome V8 引擎构建而成。它是异步的,这意味着它不必等待一个进程完成,即可启动另一个进程。与 V8 一样,Node.js 提供免费的开放源代码。与 V8 不同,它没有内置沙箱技术。

(熟悉 JavaScript 的人会注意到文件扩展名是 “.js”;不过,这只是通过一个美观的运行时环境名称表明其与 JavaScript 相关,并不表示 Node.js 是 JavaScript 文件。)

*运行时环境是在其中执行代码的软件环境。

为什么 V8 和 Node.js 对于无服务器计算很重要?

无服务器功能需要通过某种方式,在受到触发时即开始执行。一些无服务器计算供应商提供 Node.js 作为无服务器 JavaScript 功能的运行时环境(针对其他语言使用其他运行时环境)。

Cloudflare Workers, however, run directly on V8. There are a few reasons for this. One reason is speed of execution for functions that have not been used recently. Cold starts are an issue in serverless computing, but running functions on V8 means that the functions can be 'spun up' and executed, typically, within 5 milliseconds or less. (Node.js has more overhead and usually takes a few milliseconds longer.) Another reason is that V8 sandboxes JavaScript functions automatically, which increases security.