这节课我们讨论一下 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 编写服务端代码
。确实很酷。这些是我分享给你的简要背景和工作原理。
那,下节课见。
网友评论