如果在浏览器中加载并执行JavaScript文件,服务器如何知道文件何时是节点js文件,从而在服务器上执行?
答案 0 :(得分:18)
我想在Christos的回答中添加一些内容。
JavaScript是一种语言。 node.js不是一种语言,而是一种环境/一套软件"运行正常的JavaScript。
所有浏览器都有运行网页JavaScript的JavaScript引擎(适用于Firefox的Spidermonkey,适用于Chrome的V8)。
Node.js就是与一些库捆绑在一起的V8引擎,用于执行I / O和网络,因此您可以在浏览器之外使用JavaScript(例如,创建后端服务)。
答案 1 :(得分:7)
我认为,当空气混乱时,具体的例子比概念性解释更有效。所以,举个例子:
你有一个名为" hello.js"的Node.js脚本。 (在JavaScript中,当然)只是打印" Hello World!"在控制台和退出。您可以通过键入node hello.js
来运行此脚本。它只会打印消息并退出。
你有另一个名为" server.js"的Node.js脚本。实现侦听端口3000的HTTP服务器(也称为Web服务器)。该服务器从名为" static"的目录中提供静态文件。此文件夹中有两个文件:" index.html"和" app.js"。这些是网站的文件(当然,app.js是用JavaScript编写的)。您可以通过键入node server.js
来运行此脚本。它将启动HTTP服务器并开始等待客户端请求。
当HTTP服务器脚本正在运行时,您访问&#34; http://localhost:3000&#34;点击你上面开始的网络服务器。服务器知道如何提供静态文件并知道默认情况下应该为index.html提供服务。您的浏览器加载index.html,对其进行处理,并了解它还应该返回并请求app.js文件(因为index.html中的<script>
标记)。当浏览器加载app.js时,浏览器会运行它。 Node.js服务器并不关心任何事情,只是将其作为另一个静态文件提供。
答案 2 :(得分:4)
Web浏览器和nodej都运行javascript脚本。主要区别在于NodeJS是服务器端框架,在服务器中执行javascript代码,而不是在Web浏览器(客户端)环境中执行。
没有像nodejs文件这样的概念。只有javascriprt脚本可以在客户端上运行(借助于在Web浏览器中构建的JavaScript引擎,如V8 for chrome)或在服务器中运行(在这种情况下由NodeJS提供帮助。顺便说一下,如果我没错,那么NodeJS使用的JavaScript引擎就是谷歌的JavaScript引擎V8。)