1. 程式人生 > >vue-router動態路由

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,這樣如果不重新整理頁面的話,就不用再次配置動態路由了。