![](/img/trans.png)
[英]Angular routing : how can I redirect all unknown nested routes to one component?
[英]How can I do my routing without having one long file of all the routes in nodejs?
使用此鏈接作為參考“ 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)
代碼中演示過的相同概念,以便我可以通過該信息遞歸向下? 那行得通嗎?
我為此使用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
,是因為如果您require
一個文件夾,則默認情況下它將加載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/
文件夾中的任何文件都將在/routes/
時加載並運行。
您的解決方案似乎模糊不清,就像您希望使用Visitor Patern一樣 ,在這種情況下,我建議您將./roots/
require-able( 請參閱此問題 ),並在index.js
包括所有想要的文件(作為本地文件)並export
一個注冊模塊,該模塊在每個所需文件上調用注冊模塊。
或者,您也可以將上述答案中的代碼直接復制到您的主文件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.