nodejs没有停止

时间:2010-08-01 16:31:33

标签: javascript node.js

有没有办法让nodejs每次为页面服务时重新加载?

我想在开发周期中这样做,这样我就可以避免关机了;启动每个代码更改?

5 个答案:

答案 0 :(得分:10)

修改:点击nodules及其require.reloadable()功能。

我之前的回答是关于为什么不重新加载Node.js的进程,并且在这里并不真正适用。但我认为这仍然很重要,所以我把它放在这里。

Node.js是事件IO ,专门为避免多个线程或进程而精心设计。着名的C10k problem询问如何同时为1万名客户服务。这是线程不能很好地工作的地方。 Node.js只能为一个线程服务1万个客户端。如果您每次严重削弱Node.js时重新启动Node.js。

连接IO 是什么意思?

举个例子:提供一个页面。每次Node.js即将为页面提供服务时,事件循环都会调用回调。 事件循环是每个Node.js应用程序固有的,并在初始化完成后开始运行。服务器端的Node.js与浏览器中的客户端Javascript完全相同。每当发生事件(鼠标点击,超时等)时,都会调用回调 - 事件处理程序

在服务器端?我们来看一个简单的HTTP服务器(源代码示例取自Node.js documentation

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

首先加载http模块,然后创建一个HTTP服务器并告诉它每次HTTP请求进入时都以function (request, response)开始调用内部函数,然后让服务器监听端口8124。立即执行console.log之后。

现在Node.js 事件循环接管。应用程序不会结束,而是等待请求。并且每个请求都以Hello World\n回答。

总结一下,不要重新启动Node.js,而是让事件循环决定何时运行代码。

答案 1 :(得分:6)

找到Nodemon,正是我想要的:https://github.com/remy/nodemon

答案 2 :(得分:0)

我个人使用spark2(fork),一旦找到测试它就会切换到cluster。除此之外,那些2将监听文件更改并在适当时重新加载服务器,这似乎是您正在寻找的。

答案 3 :(得分:0)

有很多应用程序可以执行此操作,但我认为最好的是Cluster,因为您的服务器停机时间为0。您还可以使用它设置多个工作人员,或使用cli REPL功能手动启动/停止/重启/显示统计数据。

答案 4 :(得分:-3)

没有。 Node.js应该始终运行。我想你可能误解了nodejs的概念。为了让nodejs为页面提供服务,它必须是自己的服务器。一旦启动服务器实例并开始侦听端口,它将一直运行直到您关闭它。

您是否可能调用函数来关闭服务器而不是仅关闭给定的流?