编译器和解释器
编译语言在程序执行之前,需要经过编译器的编译过程,并且编译之后会直接保留机器能读懂的二进制文件,这样每次程序运行时,都可以直接运行该二进制文件,而不需要重新编译了。例如C/Cpp
、Go
。
Node.js 的 JavaScript 运行时引擎是 Chrome V8,那么它们是以何种形式链接起来的呢?
之后 js 就被带入后端领域,V8 也不仅仅只是 Chrome 的一个支持引擎。
与 Chrome 差不多,node 为 v8 提供了一个宿主,只不过前者的宿主中包含的是类似于 HTML DOM、window
对象等内容;而后者则提供了一整个沙箱 vm
机制,以及文件系统、网络操作等内容。
也就是说,Node.js 实际上就是 Chrome V8 引擎的一个宿主。如果你有兴趣,也完全可以用 Chrome V8 创造一个别的 .js
,比如 Mode.js
、 Lode.js
等。
因此,我们并不需要对 Chrome V8 有一个特别深入的了解,也不需要知道它的算法、原理等。我们只用关心它暴露出来的一些 api,以及使用这些 api 所必要的储备知识。
有了这些 api,我们就能让自己的 C++ 扩展与 Node.js 进行互通了 —— 因为 Node.js 底层很大程度上也是直接使用了 Chrome V8 所暴露出来的 api。
大家好,我是 zoomdong,一名大三的学生,目前在北京实习。想给大家分享一下我最近给 Ant-design贡献代码的经历,同时也希望能引导大家来一起参与其中,一起为开源世界来贡献自己的力量!