Vue 路由按需載入(路由懶載入)
需求:vue前後端分離的專案中,需要動態載入所有的選單項,我們無法在router.js裡提前註冊路由資訊。
解決: 需要我們按需註冊路由(即執行時註冊)
步驟(1)後端傳來的component一般都是字串,我們需將其格式化成物件,然後按需註冊。
export const formatRoutes = (routes) => {
let fmRoutes = [];
routes.forEach(router => {
//批量定義資料 後端傳來的menu物件裡的屬性
let {
path,
component,
name,
meta,
iconCls,
children
} = router;
//遞迴子選單
if(children && children instanceof Array){
children = formatRoutes(children)
}
let fmRouter = {
//path 路徑 name 元件的名字
path: path,
name: name,
iconCls: iconCls,
meta: meta,
//children是子選單項
children: children,
//按需載入
component(resolve) {
if (component.startsWith("Home")) {
//第一個引數就是元件裡的位置
require(['../views/' + component + '.vue'], resolve);
} else if (component.startsWith("Emp")) {
require(['../views/emp/' + component + '.vue'], resolve);
} else if (component.startsWith("Per")) {
require(['../views/per/' + component + '.vue'], resolve);
} else if (component.startsWith("Sal")) {
require(['../views/sal/' + component + '.vue'], resolve);
} else if (component.startsWith("Sta")) {
require(['../views/sta/' + component + '.vue'], resolve);
} else if (component.startsWith("Sys")) {
require(['../views/sys/' + component + '.vue'], resolve);
}
}
}
fmRoutes.push(fmRouter)
})
return fmRoutes
}
(2)將返回的fmRoutes陣列新增至路由中。
//data是後端的json字串
let fmtRoutes = formatRoutes(data);
router.addRoutes(fmtRoutes);
此時我們已經將選單項註冊進路由了。
相關文章
- 【Vue】路由按需載入(路由懶載入) component: resolve => require([‘../pages/home.vue‘], resolve)Vue路由UI
- vue路由懶載入Vue路由
- vue(18)路由懶載入Vue路由
- Vue 非同步元件&路由懶載入Vue非同步元件路由
- 【vue系列】當 element-ui 按需引入遇到 vue-router 路由懶載入VueUI路由
- Vue路由元件按需載入的幾種方法Vue路由元件
- Vue-Router學習第二彈動態路由\懶載入\巢狀路由Vue路由巢狀
- vue3 + vite實現非同步元件和路由懶載入VueVite非同步元件路由
- 記一次 Laravel-mix 使用 vue 路由懶載入填坑LaravelVue路由
- Vue元件懶載入Vue元件
- Vue 的懶載入Vue
- Zuul- 路由載入Zuul路由
- VUE如何實現按需載入?Vue
- vue後臺管理之動態載入路由Vue路由
- angular路由中的惰性載入Angular路由
- 懶載入和預載入
- 懶載入
- 手把手實現圖片懶載入+封裝vue懶載入元件封裝Vue元件
- Vue非同步元件處理路由元件載入狀態Vue非同步元件路由
- vue 動態載入路由,渲染左側選單欄Vue路由
- vue-cli懶載入問題Vue
- 按需載入(code spliting)
- 按需載入原理分析
- Ribbon - 懶載入
- 圖片預載入和懶載入
- vue圖片懶載入lazy-loadVue
- 為什麼我寫了路由懶載入但程式碼卻沒有分割?路由
- vant元件庫按需載入元件
- 前端效能優化 --- 懶載入&預載入前端優化
- 【譯】懶載入元件元件
- 圖片懶載入
- Hibernate 之 懶載入
- 淺入深出Vue:路由Vue路由
- VUE系列之效能最佳化--懶載入Vue
- React乾貨:SPA單頁如何規劃路由、設計Store、劃分模組、按需載入React路由
- [譯] React 16.6 懶載入(與預載入)元件React元件
- 在vue3中手寫按需載入圖片Vue
- vue專案打包,解決靜態資源無法載入和路由載入無效(404)問題Vue路由