56 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import type { App } from 'vue'
import type { RouteRecordRaw } from 'vue-router'
import { createRouter, createWebHistory } from 'vue-router'
// 自动导入modules目录下的所有静态路由项目可以按模块分类增加路由文件
// by panda 25.03.21
const loadRouters = async (): Promise<RouteRecordRaw[]> => {
const modules: any = import.meta.glob('./modules/*.ts')
const allRouters: RouteRecordRaw[] = []
try {
// 等待所有模块加载完成
const loadedModules = await Promise.all(
Object.values(modules).map((importFn: () => Promise<any>) => importFn())
)
loadedModules.forEach((module) => {
if (Array.isArray(module.default)) {
allRouters.push(...module.default)
} else {
console.warn('Module does not export an array of routes:', module)
}
})
} catch (error) {
console.error('Error loading route modules:', error)
}
return allRouters
}
const allRouters = await loadRouters()
// 创建路由实例
const router = createRouter({
history: createWebHistory(import.meta.env.VITE_BASE_PATH), // createWebHashHistory URL带#createWebHistory URL不带#
strict: true,
routes: allRouters, //自动导入的所有静态路由 by panda 25.03.21
scrollBehavior: () => ({ left: 0, top: 0 })
})
export const resetRouter = (): void => {
const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
router.getRoutes().forEach((route) => {
const { name } = route
if (name && !resetWhiteNameList.includes(name as string)) {
router.hasRoute(name) && router.removeRoute(name)
}
})
}
export const setupRouter = (app: App<Element>) => {
app.use(router)
}
export default router