Node.js 解释V8引擎

Node.js 解释V8引擎

什么是V8引擎?

V8是由Google开发的基于C++的开源JavaScript引擎。它最初是为Google Chrome和基于Chromium的浏览器(如Brave)在2008年设计的,但后来也被用于创建用于服务器端编码的Node.js。事实上,基于JSON的No-SQL数据库(如Couchbase)和广泛使用的MongoDB都使用了V8引擎。V8还驱动着著名的桌面应用程序框架Electron和最新的服务器端运行时环境Demo。

V8被认为是一个JavaScript引擎,因为它接收JavaScript代码并在Chrome中执行。它为JavaScript代码的执行提供了一个运行时环境。最好的部分是,JavaScript引擎与其运行的浏览器完全独立。这就是Node.js设计者选择V8引擎为框架提供动力的特性,其余则是历史。随着Node.js的受欢迎程度不断增长,V8引擎也被用于构建桌面框架和数据库。

V8引擎是如何工作的?

JavaScript引擎是解释JavaScript代码并运行它的一种解释器。开发JavaScript引擎的第一种方法是将其实现为标准解释器,就像Mozilla的SpiderMonkey所做的那样。另一种选择是采用即时(JIT)编译,将原生JavaScript代码转换为机器代码,就像V8所做的那样。V8代码与其他编程语言的区别在于它不会生成中间代码。

当开发人员或程序在V8上运行JavaScript代码时(即在浏览器或Node环境中),Ignition解释器会编译JavaScript代码并生成非优化的机器代码。V8的Turbofan和Crankshaft组件会在运行时检查和重新编译机器代码,以获得最佳性能。

Node.Js和V8

Node.js被称为运行时环境,因为它包含了运行JavaScript程序所需的一切。

这个V8引擎是Node.js的核心。该图比较了用于推动Java运行时环境的Java虚拟机(JVM)和V8引擎。除了V8引擎,Node.js运行时环境还包括了多个Node API来支持Node.js环境。通过安装额外的npm包,我们可以增强我们的node代码的功能。

Node.js 解释V8引擎

需要记住的一件事是,V8本质上是一个独立的C++库,被Node或Chromium用来运行JavaScript代码。V8会暴露一个API,其他应用程序可以利用它,因此你可以将V8嵌入到你的C++程序中,并从中运行JavaScript程序。Node和Chrome就是这样工作的。

假设我们想要在我们的JavaScript代码中添加print(‘hello world’)这样的语句,除了console.log(‘Hello World’)。在V8中,我们可以添加我们自己的C++实现的print函数。

Node.js中V8的内存限制

当前,V8在32位计算机上的RAM限制默认为512MB,在64位平台上为1GB。可以通过将–max-old-space-size设置为最多1GB(32位)或1.7GB(64位)来增加此限制。如果内存不足,将单个进程分为多个工作进程是一个好的做法。

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

当前版本的Node.js引擎需要V8才能正常工作。如果没有V8,它将没有JavaScript引擎,因此无法运行JavaScript代码。Node.js附带的本机代码绑定(例如fs(文件系统)模块和Net模块)使用了C++和JavaScript之间的V8接口。

尽管在技术世界中任何事情都有可能,微软在2016年7月尝试将Node.js中的V8引擎替换为Chakra JavaScript引擎(当时Edge浏览器使用的引擎),但该项目并未成功,而微软Edge浏览器最近切换到了使用V8 JavaScript引擎的Chromium。

Deno是在服务器端编程领域引入的最新技术。许多人认为在接下来的2-3年中,它将取代Node.js,并且它也是由V8 JavaScript引擎提供支持的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程