是否可以使用Express.Router創建不共享中間件的不同路由器?封裝快速路由器
對我來說,似乎Express.Router使用單身,所以無論我嘗試什麼,中間件都會連接到所有路由器。所以,無需創建的快捷應用程序的多個實例,是有辦法做到以下幾點:
創建複式路由器
var router_a = Express.Router();
var router_b = Express.Router();
給每個路由器獨特的路線和中間件
router_a.use(function(req, res, next){
console.log('Only works on router_a!');
});
router_a.get('/', function(req, res){
console.log('Only works on router_a!');
});
router_b.use(function(req, res, next){
console.log('Only works on router_b!');
});
router_b.get('/', function(req, res){
console.log('Only works on router_b!');
});
將每個路由附加到自定義url命名空間
app.use('/a', router_a);
app.use('/b', router_b);
是否有直接的方法來實現這一點?在閱讀路由器上的文檔之後,我沒有看到任何暗示這種可能的東西。
是的,你可以根據需要和各自爲對方完全獨立,並可以在自己的URL命名空間的子集工作,有許多路由器。這是在[快速文檔](http://expressjs.com/en/guide/routing.html#express-router)中解釋的。在這個特定的例子中,'/ birds/*'由一個路由器實例處理,您可以爲其他頂級路徑重複多次。而且,頂級路由器也可以在其中具有子路由器。每個路由器都有自己的中間件,只有在涉及到路由器的路徑時纔會觸發。 – jfriend00
這似乎沒有按照您的說法工作。當我設置多個路由器時,不匹配的路由器的middlware仍然會在所有路由上執行。 –
你可能會發表一個工作的例子嗎?因爲我可能做錯了一些事情。 @ jfriend00 –