Node.js和V8有什么关系?

73

我已经思考了一段时间这个问题,但似乎无法找到答案。Node.js和V8之间有什么关系?Node.js能否在没有V8的情况下工作?

3个回答

77

Node.js和V8之间有什么关系?

V8是node.js内部的Javascript引擎,负责解析和运行你的Javascript代码。同样的,V8引擎也被用于Chrome浏览器中运行Javascript。Google开源了V8引擎,node.js的开发者们利用它来在node.js中运行Javascript。

没有V8时Node.js能否工作?

不能。当前的node.js二进制文件不能在没有V8的情况下工作。因为没有Javascript引擎,所以它无法运行代码,显然会变得不可用。Node.js并不设计用于与其他Javascript引擎一起运行,事实上,所有与node.js捆绑的本地代码绑定(例如fs模块或net模块)都依赖于C ++和Javascript之间的特定V8接口。

微软正在努力允许使用Chakra Javascript引擎(Edge浏览器中的引擎)与node.js一起工作。他们在Chakra之上构建了一个V8桥接层,以便原本期望与V8通信的node.js二进制代码可以继续做它所做的事,并最终与底层的Chakra引擎进行通信。据我所知,这个工作特别针对已经具备Chakra引擎却没有运行V8引擎的微软平台,尽管它也可以在Windows上使用。


4
你可以使用 Node Chakra Core 版本来运行 Node,不必依赖 V8。另外,Node 中即将推出 N-API,它允许你在 Node 中使用任何你想要的 JS 引擎。 - user835611
1
@user835611 - 我已更新我的答案以反映有关Chakra的信息。 - jfriend00
那么Node本身的附加值是什么? - Minh Nghĩa
8
V8只是一款JavaScript引擎,没有与外部通信的能力,无网络、文件系统、安全功能等。因此,Node.js添加了一个大型运行时库,使得V8可以用于解决实际问题。你可以认为Node.js向JavaScript添加了一个标准库,类似于Java或C++中的标准库(但不同的是,JavaScript的库不是语言标准的一部分,而是由环境添加的-无论是浏览器还是Node.js)。 - jfriend00

5

通过使用node-chakracore项目,Node.js实际上可以在某种程度上不依赖V8运行。目前正在进行工作,以减少V8和Node之间的紧密耦合,以便可以使用不同的JavaScript引擎。


2
或者使用 spidernode,它是基于 SpiderMonkey 的 Node.js。 - jmdeamer
Edge已经成为Chrome,因此Chakra和node-chakracore被弃用。 - user3064538

3
许多初学者认为Node.js是一种编程语言,但实际上它并不是。在了解V8和Node.js之间的关系之前,让我们先看看什么是V8。

V8

V8是一个JavaScript引擎。JavaScript引擎用于将JavaScript代码解释成机器码。有不同的JavaScript引擎,例如:Chrome的V8、IE的Chakra、Netscape的SpiderMonkey等。

Node.js和V8

V8是一个浏览器引擎,而Node.js是建立在V8之上的运行时环境,它使得JavaScript可以在服务器端运行。

Node.js能否在没有V8的情况下工作?

是的,但我从未使用过其他JavaScript引擎来运行Node.js。


Electron网站称它是一个嵌入式NodeJS桌面应用程序开发框架。但是,如果NodeJS是面向服务器的,而V8是面向浏览器的,我就看不到任何桌面范例了。 - Ate Somebits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接