vue-router動態路由


被這個動態路由折磨了三天,記錄下經驗:

一、路由:

  路由分兩塊,一是公共頁面,如登錄頁、不需要登錄、不需要權限就能訪問的頁面。另一部分是后台動態返回的權限列表。

  因此,路由分為了默認路由權限路由兩部分:
  默認路由:登錄頁。
  權限路由:其他所有需要控制權限的路由。

二、登錄:

  1、登錄獲取登錄狀態、用戶信息、后端返回的權限列表
  2、本地localstorage緩存數據,為用戶刷新頁面保存數據。
  3、進行頁面跳轉(跳到home頁)。

三、入口main.js配置:

  1、在route.beforeEach中,判斷用戶是否登錄,已登錄next(),未登錄跳到登錄頁。
  2、有些頁面可能只有管理員或特殊級別人員看到,可以輔助role進行判斷。router的meta里可以攜帶要求的角色權限信息。
  3、處理刷新的情況:如果頁面刷新,因為store里的數據完全丟失,本地localstorage恢復數據。

四、配置路由:

  很多人把配置路由放在了route.beforeEach中,在這里判斷用戶是否已經加載路由,我也用了這個方法,但折騰了好久都沒成功。最后換了個思路。

  1、store里用routesAdded字段表示路由是否已經動態加載。
  2、默認routesAdded值為false,登錄成功緩存數據時緩存的的值也是false。
  3、由於不管是刷新頁面還是vue router push,App都會created,所以動態配置路由的工作放到了App的created里了。
  4、如果store里routesAdded為false,配置動態路由。

五、動態路由:

  1、遞歸過濾處理后台返回的權限列表,跟本地所有的權限路由進行比對過濾,生成一份需要動態加載的動態路由。
  2、設置動態路由的默認跳轉,如果路由有children就自動跳轉到chidren的第一個路由,以此類推。
  3、通過router.addRoutes動態添加路由。
  4、動態路由加載完成后,將routesAdded設置為true,這樣如果不刷新頁面的話,就不用再次配置動態路由了。

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM