从app.js移出路线逻辑

rah*_*a95 3 node.js express

我正在设计一个带有node.js和Express的应用程序,我想知道是否可以将某些路由逻辑移出app.js文件.为了exapmle,我的app.js目前包含:

app.get('/groups',routes.groups);
app.get('/',routes.index);
Run Code Online (Sandbox Code Playgroud)

有没有办法将这个逻辑移出app.js文件,只有类似的东西:

app.get('/:url',routes.get);
app.post('/:url",routes.post);
Run Code Online (Sandbox Code Playgroud)

这样,所有的GET请求将被处理routes.get所有POST与处理的请求routes.post

jos*_*736 5

您可以传递正则表达式作为路由定义:

app.get(/.+/, someFunction);
Run Code Online (Sandbox Code Playgroud)

这可以匹配任何东西.但是,如果您只想将路径定义移到主app.js文件之外,那么执行以下操作会更加清晰:

app.js

var app = require('express').createServer();

...

require('routes').addRoutes(app);
Run Code Online (Sandbox Code Playgroud)

routes.js

exports.addRoutes = function(app) {
    app.get('/groups', function(req, res) {
        ...
    });
};
Run Code Online (Sandbox Code Playgroud)

这样,你仍然使用Express的内置路由,而不是自己重新滚动(就像你在你的例子中所做的那样).