在Node.js中使用单独的控制器和路由

我正在寻找主观的build议(我知道这可能会被closures),但我希望能够在node.js项目中分离路由和控制器,所以我有一些问题:

  • 尝试使用node.js哲学是否有更less/更大的JS文件是无用的?
  • 我希望能够要求(“路由”),并将我的所有路由连接到我的控制器所需的模块。 如果我只是把所有东西都放在index.js ,我可以轻松地做到这一点,但这似乎很奇怪。 我已经在做app.get("/" controllers.index); 风格分离,但我越来越挂在build立一个模块,只包括所有的JS文件在另一个模块。 我错过了什么吗?
  • 或者也许有一个完全不同的node.js风格来做到这一点,我试图映射我的ASP.NET MVC知识太深?

如果你想把它整合到一个文件中,你可以尝试类似这样的方法,它需要./routes/每个文件,然后调用导出到app的函数作为参数:

 // routing.js var fs = require('fs'); module.exports = function(app) { fs.readdirSync(__dirname + '/routes/').forEach(function(name) { var route = require('./routes/' + name); route(app); }); } // routes/index.js module.exports = function(app) { app.get('/something', function(req, res) { ... }); app.get('/something/else', function(req, res) { ... }); } // routes/pages.js module.exports = function(app) { app.get('/pages/first', function(req, res) { ... }); app.get('/pages/second', function(req, res) { ... }); } // server.js var app = express.createServer(); require('./routing')(app); // require the function from routing.js and pass in app 

在GitHub上的Express example目录中也有一些有趣的例子,例如基于MVC的实现RESTful路由的example ,就像Rails一样。

如果你的意图是做一些REST的API服务器,试试看: https : //github.com/kilianc/node-apiserver也是例子: https : //github.com/kilianc/node-apiserver/blob/master/例子