【翻译】Node.js 教程 —— V8 引擎

2018-11-11  本文已影响16人  kyuan

这节课我们讨论一下 V8 引擎,那样就可以完整地了解 Node.js 是怎样工作的,还有再深入底层一点与它是由哪些组件组成。

第一个就是 V8 引擎

Javascript 引擎
V8 引擎是 Node.js 的核心,我认为很值得了解里面的运行原理。

首先,什么是 Javascript 引擎,计算机自身是不懂我们编写的 Javascript,因此需要 Javascript 引擎去转换 Javascript 代码成计算机能识别的机器码,这样才能被处理,像下图,


机器码

Node.js 自身实际是基于 C++ 编写,看起来可能不太像,因为编写的代码都是 Javascript。差别就是,Node.js 自身基于 C++ 编写,但作为编程使用方式,允许我们可以在计算机或服务端运行 Javascript

Node.js 基于 C++ 编写的原因是其使用 Google 所创的 V8 引擎也是采用 C++ 编写。


所以 Node.js 是...

所以,我们知道 Node.js 是基于 C++ 编写,Node.js 的核心是 V8 引擎,可以转换我们写的 Javascript 代码为机器能识别的机器码。

如果你有需要了解更多 V8 引擎,可以到 Google 的 V8 引擎介绍页面,里面说:

V8 是 Google 基于 C++ 编写并在 Google Chrome 浏览器使用的高性能开源 Javascript 引擎

所以 V8 同时也是 Google Chrome 浏览器使用的引擎,当我们编写客户端 Javascirpt 时,即在 Chrome 浏览器使用时,V8 也会为其进行转换。

V8 可以独自运行,也可以嵌套在 C++ 程序中使用

这就知道 Node.js 是 C++ 应用程序,它做的就是使用 V8 并将其嵌入到 Node.js 中。

Node.js 是怎样与 V8 工作的?

Node.js 与 V8

当我们编写 Javascirpt,使用 Node.js 运行,它会将代码交给 V8 引擎转换成机器能识别的机器码。

V8 引擎只是 Node.js 所用的一部分,还有其他部分也是基于 C++ 编写,其他基于 C++ 编写部分给 V8 引擎提供了一个钩子,为其增加了额外的功能。

起初 Javascirpt 被设计成在浏览器端使用,而不是处理较底层的操作,但 C++ 这方面远比 Javascirpt 强,因而其他基于 C++ 编写部分为 Javascript 扩展了这些底层操作,如读写文件与连接数据库等操作。

这些都是 Node.js 令人兴奋的地方,给予了 Javascirpt 前所未有的能力,同时让我们可以通过 Javascript 编写服务端代码。确实很酷。这些是我分享给你的简要背景和工作原理。

那,下节课见。

上一篇 下一篇

猜你喜欢

热点阅读