31 lines
849 B
TypeScript
31 lines
849 B
TypeScript
import generatedRoutes from 'virtual:generated-pages';
|
|
import { RouteRecordRaw } from 'vue-router';
|
|
|
|
export const TOP_ROUTE_PREF = '_';
|
|
export const APP_ROUTE_NAME = '_layout';
|
|
|
|
/**
|
|
* 转换路由
|
|
* @description 以 _ 开头的路由为顶级路由,其余为应用路由
|
|
*/
|
|
const transformRoutes = (routes: RouteRecordRaw[]) => {
|
|
const topRoutes: RouteRecordRaw[] = [];
|
|
const appRoutes: RouteRecordRaw[] = [];
|
|
|
|
for (const route of routes) {
|
|
if ((route.name as string)?.startsWith(TOP_ROUTE_PREF)) {
|
|
if (route.name === APP_ROUTE_NAME) {
|
|
route.children = appRoutes;
|
|
}
|
|
route.path = route.path.replace(TOP_ROUTE_PREF, '');
|
|
topRoutes.push(route);
|
|
continue;
|
|
}
|
|
appRoutes.push(route);
|
|
}
|
|
|
|
return [topRoutes, appRoutes];
|
|
};
|
|
|
|
export const [routes, appRoutes] = transformRoutes(generatedRoutes);
|