我是MEAN堆栈的初学者,在学习NodeJS时,我想出了以下声明,这是我的想法
Node.js是一个非常强大的基于JavaScript的框架/平台 在谷歌Chrome的JavaScript V8引擎上。
但究竟是什么意思
基于Google Chrome的JavaScript V8引擎构建。
如果它是基于Chrome的JS V8引擎构建的,为什么它也适用于Firefox?
答案 0 :(得分:19)
MEAN堆栈,从后到前重组:
所以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上运行”。
它是一种服务器端脚本技术,与浏览器无关。
让我们首先对以下术语有基本的了解。
ECMAScript - ECMA-262中定义的用于创建通用脚本语言的规范。
Javascript - 一种符合ECMAScript规范的通用脚本语言。
ECMAScript引擎是一个执行以ECMAScript语言标准版本编写的源代码的程序,例如,JavaScript。
这些是用于Web浏览器的新一代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应用程序。
希望这会有所帮助。:)
答案 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引擎用于上述目的 所以它独立于浏览器和平台。