将应用程序重构为服务器端&客户端容器

时间:2013-12-18 11:41:18

标签: 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.get('port'), function() {
    console.log("app:" + app.get('port') + " running through express server.");
})

我觉得我的http:createServer太小而且容易受到攻击,我想扩展它。有没有办法把它放在./app/server/http.js里面并包含toobusy模块(对我而言,这些例子似乎太难了)。

有解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您只需创建一个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文件中,将main字段设置为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的好处,同时实现您想要的分离。