是否可以在 Express 中自动路由,所以我不必列出所有路由?
例如:转到 URL '/users/first_example' 应该自动使用“users.first_example”模块。
app.get('/users/:name', function(req,res){
return eval('users.'+req.params.name); //failed attempt
});
我肯定缺少一些东西,它会让我的代码看起来更优雅。
非常感激。
是否可以在 Express 中自动路由,所以我不必列出所有路由?
例如:转到 URL '/users/first_example' 应该自动使用“users.first_example”模块。
app.get('/users/:name', function(req,res){
return eval('users.'+req.params.name); //failed attempt
});
我肯定缺少一些东西,它会让我的代码看起来更优雅。
非常感激。
var users = require('./users');//a module of route handler functions
app.get('/users/:name', function(req,res){
var handler = users[req.params.name];
if (typeof handler === 'function') {
return handler(req, res);
}
res.status(404).render('not_found');
});
您可能想在 stackoverflow 上查看这个较早的答案 - https://stackoverflow.com/a/6064205/821720
更多代码,但将路由抽象到下一个级别,并且还为您提供了一个更干净的主文件。
我一直在做类似的事情,专注于 REST 路由。看看https://github.com/deitch/booster
如果您的路由是 RESTful 的:
var booster = require('booster'), express = require('express'), app = express(), db = require('./myDbSetup');
booster.init({app:app,db:db});
booster.resource('user');
app.listen(3000);
您只需要连接数据库/持久性连接层。您可以选择自定义控制器路由、模型或其中的任何部分,但都是可选的。