如何在没有nodejs中所有路由的一个长文件的情况下进行路由?

| 使用此链接作为参考https://github.com/visionmedia/express/tree/master/examples/route-separation对“可以完成” 我不使用快递。我以它们为例。 我想做这样的事情,但“简单” ... 如何避免在一个文件中将所有路线都声明为一个复杂的长列表?我可以通过将路由器传递到我的模块中,然后将所有代码都包含在一个目录中来定义它们吗……好吧,我会遇到一个长文档,只包含“ require”,例如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)
的代码中演示的相同概念,以便我可以递归地传递该信息?那行得通吗?     
已邀请:
我为此使用
index.js
文件,并使用
require(\"routes\")
这是一个文件夹。
// app.js
route = require(\"./routes\"),
...
route(app);

// routes/index.js
var index = require(\"./index-route\"),
    about = require(\"./about-route\"),
    posts = require(\"./posts-route\");

module.exports = function(app) {
    index(app);
    about(app);
    posts(app);
};
之所以起作用,是因为如果您在文件夹中“ 9”,则默认情况下将加载“ 3”。 如果您有很多路由,则可能需要根据约定加载它们
var routes = [];
// read all files
fs.readdir(\"./\", function(files) {
    files.forEach(function(val) {
        // require all non-index.js files.
        if (val !== \"index.js\") {
            routes.push(require(val));
        }
    });
});

module.exports = function(app) {
    // for each route you required call it with app.
    routes.forEach(val.bind(null, app));
}
这将加载所有非\“ index.js \”的.js文件,因此在路由文件时,
/routes/
文件夹中的任何文件都将加载并运行。     
您的解决方案似乎模糊不清,就像您希望使用“访问者样式”一样,在这种情况下,我建议您将“ 13”作为必填项(请参见此问题),并在“ 3”中包括您希望的所有文件(作为本地文件)和“ 15”注册该模块调用每个所需文件上的注册模块。 或者,您也可以将上述答案中的代码直接复制到您的主文件中。     

要回复问题请先登录注册