组织myapp / routes / *的正确方法

时间:2012-01-27 00:49:48

标签: node.js express routes

使用最新的稳定node.js并从npm表达,我创建了我的第一个快速项目。

默认生成的应用程序定义routes / index.js,其中包含呈现默认索引视图的单个路径。

我立即假设我可以将其他.js文件添加到routes /文件夹中,它们将被包含在内。这并没有成功。只包含routes / index.js。添加其他路由到routes / index.js工作正常。

按照快速项目生成器提供的结构,定义和组织Express路由的正确方法是什么?


答案,解释DailyJS上的文章:

考虑以下路线:

app.get('/', function() {});
app.get('/users', function() {});
app.get('/users/:id', function() {});

...创建以下文件:

routes/
├── index.js
├── main.js
└── users.js

然后,在routes / index.js中:

require('./main');
require('./users');

对于每个新的相关路由组,在routes /中创建一个新文件,并从routes / index.js中创建require()。将main.js用于不适合其他文件的路由。

1 个答案:

答案 0 :(得分:19)

我更喜欢动态加载路由,而不是每次添加新路由文件时都必须手动添加其他需求。这是我目前正在使用的。

var fs = require('fs');

module.exports = function(app) {
    console.log('Loading routes from: ' + app.settings.routePath);
    fs.readdirSync(app.settings.routePath).forEach(function(file) {
        var route = app.settings.routePath + file.substr(0, file.indexOf('.'));
        console.log('Adding route:' + route);
        require(route)(app);
    });
}

我在应用程序加载时调用它,然后需要routePath中的所有文件。每条路线的设置如下:

module.exports = function(app) {
    app.get('/', function(req, res) {
        res.render('index', {
            title: 'Express'
        });
    });
}

要添加更多路由,您现在要做的就是将新文件添加到routePath目录。