Node.js 将应用程序重构为服务器端和客户端容器

Node.js 将应用程序重构为服务器端和客户端容器,node.js,express,Node.js,Express,我试图实现的是将app.js分为几个部分。到目前为止,这是成功的。到目前为止,我的结构如下所示: package.json app.js app/ - server/ - views/ - router.js - public/ - css/ - images/ - js/ - robots.txt 听起来不错?在我的app.js中,我有以下代码: http.createServer(app).listen(app.g

我试图实现的是将app.js分为几个部分。到目前为止,这是成功的。到目前为止,我的结构如下所示:

package.json
app.js
app/
  - server/
     - views/
     - router.js
  - public/
      - css/
      - images/
      - js/
      - robots.txt
听起来不错?在我的app.js中,我有以下代码:

http.createServer(app).listen(app.get('port'), function() {
    console.log("app:" + app.get('port') + " running through express server.");
})
我觉得我的http:createServer太小,太容易受到攻击,所以我想扩展它。有没有办法把它放在./app/server/http.js中,并包含toobusy模块,这些例子对我来说太难了


有解决方案吗?

如果我正确理解您的问题,您只需创建一个app/server/http.js文件并将此代码放入:

var toobusy = require('toobusy'),
    app = require('../../app');

var server = http.createServer(app);
server.listen(app.get('port'), function () { ... });

process.on('SIGINT', function() {
  server.close();
  // calling .shutdown allows your process to exit normally
  toobusy.shutdown();
  process.exit();
});
然后你可以做两件事中的一件:

1在package.json文件中,将主字段设置为app/server/http.js,如果需要,可以使用npm start启动应用程序

2另一个首选选项是,IMO在项目根目录中创建一个index.js文件,该文件如下所示:

module.exports = require('app/server/http');
然后,您可以简单地用

$ NODE_ENV=production node /path/to/project <arguments go here>

无论哪种方式,您都可以在实现所需分离的同时获得toobusy的好处。

如果您能对http:createServer太小、太脆弱的问题多做一点描述,那将是非常有益的。谢谢您的回答。在实现分离的同时,它有助于理解其好处+1@RicardoJ有一天你可能会考虑把你的服务器端和客户端分成两个单独的项目。这完全取决于两者之间共享多少代码。