V8 JavaScript 引擎
V8 是为 Google Chrome 提供支持的 JavaScript 引擎的名称。它是在我们使用 Chrome 浏览时获取并执行我们的 JavaScript 的东西。
V8 是 JavaScript 引擎,即它解析和执行 JavaScript 代码。DOM 和其他 Web 平台 API(它们共同构成了运行时环境)是由浏览器提供的。
很酷的是,JavaScript 引擎独立于其所在的浏览器。这一关键特性促成了 Node.js 的崛起。2009 年,V8 被选为 Node.js 的引擎,随着 Node.js 的流行度爆炸式增长,V8 成为了如今为大量用 JavaScript 编写的服务器端代码提供支持的引擎。
Node.js 的生态系统非常庞大,这要归功于 V8,它还通过 Electron 等项目为桌面应用提供支持。
其他 JS 引擎
其他浏览器有自己的 JavaScript 引擎
- Firefox 有 SpiderMonkey
- Safari 有 JavaScriptCore(也叫 Nitro)
- Edge 最初基于 Chakra,但最近已经使用 Chromium 和 V8 引擎进行了重建。
此外还存在许多其他引擎。
所有这些引擎都实现了 ECMA ES-262 标准,也称为 ECMAScript,这是 JavaScript 使用的标准。
对性能的追求
V8 是用 C++ 编写的,并且在不断改进。它具有可移植性,可以在 Mac、Windows、Linux 和其他几个系统上运行。
在这篇 V8 介绍中,我们将忽略 V8 的实现细节:这些细节可以在更权威的网站上找到(例如 V8 官方网站),而且它们会随着时间而改变,有时是彻底的改变。
V8 和其他 JavaScript 引擎一样,总是在不断发展,以加速 Web 和 Node.js 生态系统。
在 Web 领域,一场关于性能的竞赛已经持续了多年,我们(作为用户和开发者)从这场竞争中受益匪浅,因为我们年复一年地获得更快、更优化的机器。
编译
JavaScript 通常被认为是一种解释型语言,但现代 JavaScript 引擎不再仅仅解释 JavaScript,它们会编译它。
这种情况自 2009 年以来一直在发生,当时 SpiderMonkey JavaScript 编译器被添加到 Firefox 3.5 中,此后所有人都遵循了这一理念。
JavaScript 由 V8 内部通过**即时** (JIT) **编译**进行编译,以加快执行速度。
这可能看起来有违直觉,但自 2004 年 Google 地图推出以来,JavaScript 已经从一种通常执行几十行代码的语言,演变为在浏览器中运行成千上万行代码的完整应用程序。
我们的应用程序现在可以在浏览器中运行数小时,而不仅仅是一些表单验证规则或简单的脚本。
在这个*新世界*里,编译 JavaScript 是完全有道理的,因为虽然可能需要多一点时间来让 JavaScript *准备就绪*,但一旦完成,它的性能将比纯解释的代码高得多。