【发布时间】:2011-08-30 21:05:00
【问题描述】:
使用此链接作为参考 https://github.com/visionmedia/express/tree/master/examples/route-separation“可以做什么”
我没有使用快递。我以它们为例。
我想做这样的事情,但“更简单”......
如何避免在一个文件中的一个长而复杂的列表中声明我的所有路线?我可以通过将路由器传递到我的模块中来定义它们,然后将所有代码包含在一个目录中......好吧,我将忍受一个长文档,只包含“需要”包含,比如 index.js,为此一个~至少一个我的构建脚本可以为我重建,但最好不要在我可能添加的每条路线的主文件中。
例如,他们使用以下代码:
// General
app.get('/', site.index);
// User
app.all('/users', user.list);
app.all('/user/:id/:op?', user.load);
app.get('/user/:id', user.view);
app.get('/user/:id/view', user.view);
app.get('/user/:id/edit', user.edit);
app.put('/user/:id/edit', user.update);
// Posts
app.get('/posts', post.list);
我想避免在我的 app.js 中创建这样的列表。我想让每个文件都知道该文件的路由是什么。
这就是我想要做的:(请不要批评代码,我让它非常简单,所以我确保我以我想要的方式说明我的代码)
//app.js
var router = require('./myRouter.js')
var includes = require('./routes/*.js').register(router)
// do some stuff here with an https server and start the server here
和
//./routes/user.js
var myRouter;
exports.register(router){
myRouter = router;
}
router.addRoute(/* here I do the magic associated with this route */)
我可以就这么简单吗?我在这里错过了什么?
我没有编写此代码,因为我非常确定我会以错误的方式处理此问题。
如果我必须在/routes/ 文件夹中使用index.js 之类的东西,我可以使用我在附加的.register(router) 代码中演示的相同概念吗?递归地传递这些信息?这行得通吗?
【问题讨论】:
标签: javascript node.js url-routing router