【发布时间】:2016-11-20 08:23:55
【问题描述】:
如果JavaScript文件在浏览器中加载并执行,服务器如何知道文件何时是节点js文件,从而在服务器上执行?
【问题讨论】:
标签: javascript node.js
如果JavaScript文件在浏览器中加载并执行,服务器如何知道文件何时是节点js文件,从而在服务器上执行?
【问题讨论】:
标签: javascript node.js
JavaScript 是一种语言。 node.js 不是一种语言,而是一种运行普通 JavaScript 的“环境/软件集”。
所有浏览器都有运行网页 JavaScript 的 JavaScript 引擎(Firefox 的蜘蛛猴,Chrome 的 V8)。
Node.js 只是与一些库捆绑的 V8 引擎,用于执行 I/O 和网络,因此您可以在浏览器之外使用 JavaScript(例如,创建后端服务)。
【讨论】:
我认为当空气中出现混乱时,具体示例比概念解释更有效。所以,举个例子:
您有一个名为“hello.js”的 Node.js 脚本(当然是在 JavaScript 中),它只打印“Hello World!”在控制台中并退出。您可以通过键入node hello.js 来运行此脚本。它只会打印消息并退出。
您有另一个名为“server.js”的 Node.js 脚本,它实现了一个 HTTP 服务器(也称为 Web 服务器),它在端口 3000 上进行侦听。该服务器从一个名为“static”的目录中提供静态文件。此文件夹中有两个文件:“index.html”和“app.js”。这些是网站的文件(当然,app.js 是用 JavaScript 编写的)。您可以通过键入 node server.js 来运行此脚本。它将启动 HTTP 服务器并开始等待客户端请求。
当 HTTP 服务器脚本运行时,您访问“http://localhost:3000”以访问您在上面启动的 Web 服务器。服务器知道如何提供静态文件,并且知道它应该默认提供 index.html。您的浏览器加载 index.html,对其进行处理并理解它还应该返回并请求 app.js 文件(因为 index.html 中的 <script> 标记)。当浏览器加载 app.js 时,浏览器会运行它。 Node.js 服务器不关心任何事情,只是将其作为另一个静态文件提供服务。
【讨论】:
Web 浏览器和 nodejs 都运行 javascript 脚本。主要区别在于 NodeJS 是一个服务器端框架,并且在服务器而不是在 Web 浏览器(客户端)的环境中执行 javascript 代码。
没有像nodejs文件这样的概念。只有 javascriprt 脚本可以在客户端(借助内置在 Web 浏览器中的 JavaScript 引擎,如 Chrome 的 V8)或服务器(在本例中借助 NodeJS 的帮助)运行。顺便说一下,如果我没记错的话,NodeJS 使用的 JavaScript 引擎是 V8,谷歌的 JavaScript 引擎。)
【讨论】: