为什么我的代码中的更改会在不重新启动服务器的情况下得到反映?

时间:2016-04-15 10:53:44

标签: node.js express

在OS X终端中运行node app.js以启动服务器后,任何在编辑器中更改了内容然后保存的文件都会在我刷新localhost:3000页面时立即反映出更改,即使服务器尚未重启(到目前为止,我已在 .ejs,.css .js 文件中尝试过此操作)。

详细说明:

  • 问题只发生在一个目录中;我无法在另一个类似结构的兄弟目录中复制它。
  • 据我所知,我没有安装Nodemon / Forever / Node Supervisor。
  • 我尝试killall node(我认为我没有什么可失去的,因为这应该是我的计算机上运行的唯一进程;我现在意识到这可能是错误的方法)
  • 我已经尝试重新启动计算机,但无济于事;问题仍然存在。
  • 当我停止应用程序时,localhost:3000页面显示"无法访问此站点",即服务器可以并且已经停止。

为什么我不需要停止( Ctrl + C )然后重启( Enter )每次我在编辑器中保存文件时应用程序?这里发生了什么以及如何复制或停止?

1 个答案:

答案 0 :(得分:2)

HTML,CSS和前端JS修改不要求您重新启动节点进程,因为每次请求都会读取它们,这与启动服务器时加载到内存中的服务器端代码不同。

基本上发生的是当你运行你的服务器端JS,就像app.js一样,它加载到内存中,只要进程正在运行,当你提供框架读取的html文件时,该文件中的任何代码都将保留在内存中每次收到请求时都会生成html文件,因为每次都会反映html文件的更改,而不必重新启动服务器,以及html文件中的JS更改都会反映出来,因为它们不是服务器端进程的一部分。在您的进程打开的每个请求中,html文件读取其内容并使用HTTP协议发送到浏览器,您的浏览器会读取您的html响应并请求您的服务器获取您公共文件夹中的html中包含的必要JS文件。希望这会有所帮助。 / p>