gpt4 book ai didi

javascript - 如果没有 nodejs 中所有路由的一个长文件,我该如何进行路由?

转载 作者:搜寻专家 更新时间:2023-11-01 00:34:25 24 4
gpt4 key购买 nike

使用此链接作为引用 https://github.com/visionmedia/express/tree/master/examples/route-separation什么是“可以做的”

我没有使用 EXPRESS。我以它们为例。

我想做这样的事情但是“更简单”......

我怎样才能避免在一个文件中的一个又长又复杂的列表中声明我的所有路由?我可以通过将路由器传递到我的模块中来定义它们,然后将所有代码包含在一个目录中吗?好吧,我会忍受一个只“需要”包含的长文档,比如 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);
};

这是有效的,因为如果您需要一个文件夹,它将默认加载index.js

如果你有很多路由,你可能希望根据约定加载它们

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/ 文件夹中的任何文件都将被加载并运行。

关于javascript - 如果没有 nodejs 中所有路由的一个长文件,我该如何进行路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com