|
|
@ -184,30 +184,35 @@ function handleAsyncRoutes(routeList) { |
|
|
|
addPathMatch(); |
|
|
|
} |
|
|
|
|
|
|
|
/** 初始化路由 */ |
|
|
|
/** 初始化路由(`new Promise` 写法防止在异步请求中造成无限循环)*/ |
|
|
|
function initRouter() { |
|
|
|
return new Promise(resolve => { |
|
|
|
if (getConfig()?.CachingAsyncRoutes) { |
|
|
|
// 开启动态路由缓存本地sessionStorage
|
|
|
|
const key = "async-routes"; |
|
|
|
const asyncRouteList = storageSession.getItem(key) as any; |
|
|
|
if (asyncRouteList?.length > 0) { |
|
|
|
if (asyncRouteList && asyncRouteList?.length > 0) { |
|
|
|
return new Promise(resolve => { |
|
|
|
handleAsyncRoutes(asyncRouteList); |
|
|
|
resolve(router); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
return new Promise(resolve => { |
|
|
|
getAsyncRoutes().then(({ data }) => { |
|
|
|
handleAsyncRoutes(data); |
|
|
|
storageSession.setItem(key, data); |
|
|
|
resolve(router); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
resolve(router); |
|
|
|
} else { |
|
|
|
return new Promise(resolve => { |
|
|
|
getAsyncRoutes().then(({ data }) => { |
|
|
|
handleAsyncRoutes(data); |
|
|
|
resolve(router); |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 将多级嵌套路由处理成一维数组 |
|
|
|