expressjs路由configuration对象?

你能简单地将所有路由configuration设置在一个对象中吗? 基本上我想要做的是有一个名为routing.js文件,导出一个包含所有路由的对象。 不得不为每个路由使用express.get()是平凡的。

我实际上有一个文件夹,它保存我的路线的所有文件(我分裂了他们的对象)。 我也把我的控制器分成文件。 路由文件看起来像这样:

/** * Module dependencies. */ var controller = require('../controllers/index'); /** * The API root for this object. */ var root = '/'; /** * Route definitions. */ var routes = function (app) { // get index app.get(root, controller.getIndex); }; /** * Exports. */ module.exports = routes; 

然后在我的app.js文件中,我这样做会自动加载所有的路由文件并configuration500和404路由:

 fs.readdir(__dirname + '/routes', function (err, files) { if (err) throw err; files.forEach( function (file) { require('./routes/' + file)(app); }); /** * 500 page. */ app.use( function (err, req, res, next) { if (err && err.status === 404) { return next(); } res.statusCode = 500; res.render('404.html', {status: 500, url: req.url, error: ': ' + err.message}); }); /** * 404 page. */ app.use( function (req, res, next) { res.statusCode = 404; res.render('404.html', {status: 404, url: req.url}); }); }); 

如果您不想像这样读取文件,则导入部分是这一行:

 require('./routes/' + file)(app); 

这使您可以使用之前定义的路线。

我这样做是为了保持对创build哪些路由的控制。 如果你想自动化这个过程,你可以使用https://github.com/visionmedia/express-resource

这可以让你做到:

 var express = require('express'), Resource = require('express-resource'), app = express.createServer(); app.resource('forums', require('./forum')); 

为了自动创build指向./forum中以下函数的路由:

 GET /forums -> index GET /forums/new -> new POST /forums -> create GET /forums/:forum -> show GET /forums/:forum/edit -> edit PUT /forums/:forum -> update DELETE /forums/:forum -> destroy 

如果你想要更简单的东西,你可以这样做…

 var getRoutes = [['/', controller.index], ['/post', controller.showPost]]; for (var i = 0, len= getRoutes.length; i < len; i++) { var path = getRoutes[i][0]; var controller = getRoutes[i][1]; app.get(path, controller); }