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

时间:2016-12-30 16:55:02

标签: javascript node.js google-chrome

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

  

Node.js是一个非常强大的基于JavaScript的框架/平台   在谷歌C​​hrome的JavaScript V8引擎上。

但究竟是什么意思

  

基于Google Chrome的JavaScript V8引擎构建。

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

8 个答案:

答案 0 :(得分:19)

MEAN堆栈,从后到前重组:

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

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

"基于V8"意味着它使用与Google Chrome相同的JavaScript解释器/即时编译器。但是与chrome的相似之处几乎停在那里:Node没有渲染引擎/ css解析器/ DOM,但在HTTP库和文件系统API等服务器中确实有你需要的东西。

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

答案 1 :(得分:7)

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

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

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

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

答案 2 :(得分:5)

好的,让我们通过这个:

  

Node.js是一个非常强大的基于JavaScript的框架/平台   谷歌Chrome的JavaScript V8引擎。

JavaScript 是一种在互联网浏览器中使用的编程语言。我认为1995年由NetScape发明 ,并于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编写后端代码一样。

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:1)

没有意义表示NodeJS“无法在Firefox上运行”或“在Chrome上运行”。

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

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

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

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

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

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

  • Carakan :Opera Software开发的ECMAScript引擎 ASA,Opera Web浏览器的发布,(直到切换到V8 歌剧15)
  • 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中使用的ECMAScript引擎 (JDK)
  • 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应用程序框架。

希望这会有所帮助。:)

答案 5 :(得分:0)

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

NodeJS是一个单独的应用程序,您可以通过互联网进行通信,它类似于Apache,Nginx或类似的应用程序,但它不仅仅用于一件事(如上所述),但它和#39; s主要用于制作类似Web服务器的应用程序。

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

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