2012-07-06 37 views
7

我在寻找主观建议(我知道这可能会关闭),但是我希望能够在node.js项目中分离路由和控制器,所以我有一些问题:在Node.js中使用单独的控制器和路由

  • 尝试使用node.js哲学是否具有更少/更大的JS文件是没用的?
  • 我希望能够要求(“路由”)并将我的所有路由连接到我的控制器所需的模块。如果我只是将所有内容都放在index.js之内,我可以轻松做到这一点,但这看起来很奇怪。我已经在做app.get("/" controllers.index);样式分离,但是我正在建立一个只包含所有JS文件到另一个模块的模块。我错过了什么吗?
  • 或者也许有一个完全不同的node.js风格来做到这一点,我试图将我的ASP.NET MVC知识映射得太深?
+0

尝试一个轻量级的表达,熨斗MVC https://github.com/pksunkara/bullet/tree /主/示例/ – 2012-07-06 20:25:00

回答

7

如果你想获得这一切成一个文件,你可以尝试这样的事情,这需要每个文件在./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目录中也有一些有趣的例子,比如an MVC-based one,它实现了与Rails很相似的RESTful路由。