我在路由这配置的是动态获取路由的配置信息,我使用的技术栈是vite+vue3,现在获取到了数据,但是vite会来操作我的数据,现在在component哪一块跟静态配置的路由不一样,导致我现在页面显示空白
import {createRouter, createWebHistory, NavigationGuardNext, RouteLocationNormalized, Router} from 'vue-router';
import {isNotEmptyString} from "../utils/toolUtil.ts";
import {jurisdictionStore} from "../stores/jurisdiction.ts";
import {getRouterList} from "../api/routerApi.ts";
import {show, showLoading} from "../utils/messageUtil.ts";
interface Meta {
title: string
}
interface Routes {
path: string,
name?: string,
component: Function,
meta: Meta,
children?: Routes[]
}
export const routes : Routes[] = [
{
path: '/admin/404',
// @ts-ignore
component: () : string => import('../pages/error/Admin404.vue'),
meta: {
title: '404-找不到页面'
}
},
{
path: '/404',
name: '404-找不到页面',
// @ts-ignore
component: () : string => import('../pages/error/404.vue'),
meta: {
title: '404页面'
}
}
];
const router : Router = createRouter({
history: createWebHistory(),
// @ts-ignore
routes: routes,
dynamic: true
});
router.beforeEach((to : RouteLocationNormalized,from : RouteLocationNormalized,next : NavigationGuardNext) => {
console.log(to,from)
// 获取权限id
// @ts-ignore
let jurisdictionId = jurisdictionStore().getJurisdictionId.value;
getRouterList(jurisdictionId).then(response => {
for (let i : number = 0; i < response.length; i++) {
let route = {
path: response[i].path,
name: response[i].name,
// @ts-ignore
component: () : string => import(`../pages${response[i].component}`),
meta: response[i].meta
};
router.addRoute(route);
showLoading(false);
}
next();
}).catch(err => {
console.log('错误原因: ' + err.message);
show('error','获取路由列表失败');
showLoading(false);
})
})
router.afterEach((to : RouteLocationNormalized) : void => {
let title = to.meta.title;
// @ts-ignore
if (isNotEmptyString(title)) {
// 修改html的标题为meta中的名称
// @ts-ignore
document.title = title;
}
});
export default router;