繁体   English   中英

说nodeJS是建立在V8引擎上的意思是什么?

[英]What does it mean to say nodeJS is built on the V8 engine?

我是MEAN堆栈的初学者,在研究NodeJS时,我想出了以下声明,这是我的想法

Node.js是一个非常强大的基于JavaScript的框架/平台,构建于Google Chrome的JavaScript V8引擎之上。

但究竟是什么意思呢

基于谷歌Chrome的JavaScript V8引擎构建。

如果它是基于Chrome的JS V8引擎,为什么它也适用于Firefox?

MEAN堆栈,从后到前重组:

  • MongoDB:数据持久性,存储数据供以后检索
  • Node.js:Web应用程序服务器,响应来自客户端的请求
  • Express:Web应用程序框架,减少了Node样板
  • Angular.js:浏览器框架

所以Node.js并不“适用于Firefox”(它也不适用于谷歌Chrome):它是一种服务器端技术。 可以将其视为该角色中Python / Ruby / Java的替代品。 因此它可以/确实响应来自各种客户(例如谷歌浏览器和Firefox)的请求。

“基于V8构建”意味着它使用与谷歌浏览器相同的JavaScript解释器/即时编译器。 但与chrome的相似之处几乎就此止步:Node没有渲染引擎/ css解析器/ DOM,但确实在服务器中需要你需要的东西,如HTTP库和文件系统API。

此外,我的意思是没有冒犯:我们都开始你的位置,你甚至问这个问题(这也不是一件坏事!)意味着建立在像MEAN这样的堆栈上是你的头脑。 文档将假设您知道您似乎不知道的事情。 强烈建议在尝试将数据库和框架投入混合之前,通过一些教程和准系统测试应用程序来进一步理解JavaScript和Node。

为了使编程语言由计算机执行,需要将其翻译成机器可以理解的格式(通常称为机器代码 )。 Javascript也不例外。 当您的浏览器在网站上显示Javascript代码时,需要编译某些内容,或者在Javascript的情况下,将指令解释为机器代码。

V8是由谷歌开发的程序。 当您使用Chrome并在页面上检测到Javascript时,它会将其传递给V8以运行编译,然后您的计算机将执行生成的代码。

V8由谷歌开源。 Node的创建者Ryan Dahl修改了源代码,以便V8可以在Chrome之外以及Linux或MacOS等操作系统中使用。 这就是你的第一句话的含义。

这里要注意的重要一点是,您不是在浏览器中执行Node程序,而是使用您正在使用的实际计算机。 V8和Firefox,Safari,IE等之间没有相关性。所有这些浏览器都有自己的Javascript解释器。

好的,让我们通过这个:

Node.js是一个非常强大的基于JavaScript的框架/平台,构建于Google Chrome的JavaScript V8引擎之上。

JavaScript是一种在互联网浏览器中使用的编程语言。 它是由NetScape于1995年发明的 ,我认为它已于1996年提交给一个名为ECMA的认证机构。

ECMA采用了JavaScript的最初构想,并制定了一个名为ECMAScript的标准,每个JavaScript实现都应该遵循这个标准。 你看,JavaScript不是一种只存在于以太网中的语言 - 每个互联网浏览器都附带了它自己的语言实现 - 这意味着JavaScript通常只能在互联网浏览器中运行,例如Mozilla,Safari,Opera或Chrome (Internet Explorer还附带了ECMAScript的实现,但他们称之为JScript,我认为这是许可的原因)

Google Chrome附带的JavaScript实现运行在功能强大的V8引擎上,该引擎使用C ++语言编写。 V8解释您的JavaScript代码并提供所有变量类型,管理内存等.V8的优点在于它是开源的,可以嵌入到任何其他C ++程序中。

因此, Node的创建者想要通过添加服务器需要为服务网站提供的功能来获取V8并增强它 - 读取文件,响应请求,路由等。这意味着现在可以编写服务器端的实现一个使用JavaScript的网站,感谢Node.js应用程序解释您的代码,并基本上将其转换为C ++和更高版本的机器代码。 重要的区别是Node.js不会在您的浏览器中运行! 它在服务器上运行,就像使用PHP和apache编写后端代码一样。

Node使用运行chrome的相同JS“引擎”。 在这种情况下,引擎是一种软件,可以将JS代码编译或“转换”为机器代码; 或者您的计算机可以理解的0和1。 这个编译是一个复杂的过程,有一些不同的解决方法,例如google的v8或mozilla的spidermonkey。 其中每个都支持整个JS标准(在某种程度上),即任何JavaScript代码都可以在它们上运行。

运行节点服务器时,它在充当服务器的计算机上运行。 代码根本不在用户的机器上运行; 因此,使用哪个浏览器查看您的内容并不重要。

在MEAN堆栈中,它是在用户计算机上运行的角度代码。 但是,它是用JavaScript编写的,可以在任何javascript引擎上运行。

没有任何意义说NodeJS“ 在Firefox上不起作用”或“在Chrome上工作 ”。

它是一种服务器端脚本技术,与浏览器无关。

让我们首先对以下术语有基本的了解。

  • Ecma International - 一个为技术创建标准的组织。
  • ECMA-262 - 这是Ecma International发布的标准。 它包含通用规范
    脚本语言,例如:Javascript。
  • ECMAScript - ECMA-262中定义的用于创建通用脚本语言的规范。

  • Javascript - 一种符合ECMAScript规范的通用脚本语言。


ECMAScript引擎是执行以ECMAScript语言标准版本编写的源代码的程序, 例如JavaScript。

这些是用于Web浏览器的新一代ECMAScript引擎,

  • Carakan :由Opera Software ASA开发的ECMAScript引擎,Opera Web浏览器的发布,(直到用Opera 15切换到V8)
  • Chakra (JScript9):Internet Explorer中使用的ECMAScript引擎。
  • Chakra :Microsoft Edge中使用的ECMAScript引擎。
  • SpiderMonkey :Mozilla Gecko应用程序中的ECMAScript引擎,包括Firefox。
  • JavaScriptCore :ECMAScript引擎,用于WebKit项目和Safari等应用程序。
  • Tamarin :Adobe Flash中使用的ECMAScript引擎。
  • Nashorn :Oracle Java Development Kit(JDK)中使用的ECMAScript引擎
  • V8 :Google Chrome,Node.js和V8.NET中使用的ECMAScript引擎。

因此,Chrome V8或简称V8是由The Chromium Project for Google Chrome和Chromium Web浏览器开发的开源JavaScript引擎。

Node.js是一个基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。

希望你能清楚到现在为止。


现在让我们考虑术语MEAN Stack。

MEAN是基于JavaScript的技术的集合 - MongoDB,Express.js,AngularJS和Node.js - 用于开发Web应用程序。

  • Node.js -基于Google Chrome的V8 JavaScript运行时构建的服务器端JavaScript执行环境。
  • Express -用于在Node中构建Web应用程序的轻量级框架
  • MongoDB - 一个无模式的NoSQL数据库系统。
  • AngularJS - 基于JavaScript的开源前端Web应用程序框架。

希望这可以帮助。:)

V8 Engine是Google Chrome中使用的Javascript的解释器。
NodeJS建立在这个引擎之上的声明意味着它使用这个解释器,因此它也可以在服务器上使用,而不仅仅是在桌面环境中(如谷歌Chrome)。

NodeJS是一个单独的应用程序,你可以通过互联网进行通信,它就像Apache,Nginx或类似的,但它不仅仅用于一件事(如提到的那样),但它主要用于制作类似Web服务器的应用程序。

Node.js是服务器上的JavaScript。 例如,您可以在http:// localhost:8000 /上启动Node.js服务器,您可以使用Chrome或Firefox访问它。

使用Node.js(使用V8),服务器可以用JavaScript而不是PHP或Ruby编写。

实际上NodeJS是跨平台服务器端框架。 您可能知道它最适合I / O绑定和数据流应用程序,它使用谷歌Chrome的JavaScript V8引擎用于上述目的所以它独立于浏览器和平台。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM