美文网首页
【翻译】Node.js 教程 —— V8 引擎

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

作者: kyuan | 来源:发表于2018-11-11 16:01 被阅读16次

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

    第一个就是 V8 引擎

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

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


    机器码
    • 堆栈底部是机器码,这是机器能识别并基于它运行,但机器码非常难编写,看起来混乱一片不知如何开始
    • 因此我们以不同的语言远离机器码,如在机器码之上的汇编语言,但这看起来仍然很像机器码
    • 出现了 C++ 或 C,这些语言远离难以理解的机器码,却仍保留不少它原有的能力,因此十分流行。
    • 最终出现了最上方的 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
    • Node.js 基于 C++ 编写
    • V8 内嵌在 Node.js 里

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

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

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

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

    那,下节课见。

    相关文章

      网友评论

          本文标题:【翻译】Node.js 教程 —— V8 引擎

          本文链接:https://www.haomeiwen.com/subject/cbtzxqtx.html