前端開發通常會根據用戶的角色來決定特定的一些路由,addRouter提供了這個條件,通常我們使用的時候才用 router.addRouter;
但是在開發中 我發現一個問題(無中生有)假設這是我們的原始路由表:
在登錄之后 我們 添加的動態路由為:
可以發現 舊的路由與新的路由在path為 '/structure/base' 是相同的, 我們打斷點到addRouter 看看vue-router源碼是如何處理這個問題的:addRouter會調用createRouteMap方法 傳入當前的addRouter的參數和舊路由參數
然后遍歷新路由和舊路由 以及他們的后代 生成路由列表 如pathlist:
我們展開 structure/base 這個屬性的component:
可以發現 name仍舊是HelloWorld.vue的 name屬性值 即為舊的不會被addRouter里面的覆蓋,是具有優先權的