import type { App } from 'vue' import type { RouteRecordRaw } from 'vue-router' import { createRouter, createWebHistory } from 'vue-router' import { createRouterGuards } from './guards' import type { IModuleType } from './types' import { PageEnum } from '@/enums/pageEnum' const modules = import.meta.glob('./modules/**/*.ts', { eager: true }) const routeModuleList: RouteRecordRaw[] = Object.keys(modules).reduce((list, key) => { const mod = modules[key].default ?? {} const modList = Array.isArray(mod) ? [...mod] : [mod] return [...list, ...modList] }, []) function sortRoute(a, b) { return (a.meta?.sort ?? 0) - (b.meta?.sort ?? 0) } routeModuleList.sort(sortRoute) export const RootRoute: RouteRecordRaw = { path: '/', name: 'Root', redirect: PageEnum.BASE_HOME, meta: { title: 'Root', }, } export const LoginRoute: RouteRecordRaw = { path: '/login', name: 'Login', component: () => import('@/views/login/index.vue'), meta: { title: '登录', }, } // 需要验证权限 export const asyncRoutes = [...routeModuleList] // 普通路由 无需验证权限 export const constantRouter: RouteRecordRaw[] = [LoginRoute, RootRoute] const router = createRouter({ history: createWebHistory(), routes: constantRouter, strict: true, scrollBehavior: () => ({ left: 0, top: 0 }), }) export function setupRouter(app: App) { app.use(router) // 创建路由守卫 createRouterGuards(router) } export default router