12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { createWebHashHistory, createWebHistory, createRouter, type RouteRecordRaw } from 'vue-router'
- import { errorRouter, staticRouter } from '@/router/modules/staticRouter'
- import type { App } from 'vue'
- const mode = import.meta.env.VITE_ROUTER_MODE
- import { NO_RESET_WHITE_LIST } from '@/constants'
- // 路由模式
- const routerMode = {
- hash: () => createWebHashHistory(),
- history: () => createWebHistory()
- }
- /**
- * @description 📚 路由参数配置简介
- * @param path ==> 路由菜单访问路径
- * @param name ==> 路由 name (对应页面组件 name, 可用作 KeepAlive 缓存标识 && 按钮权限筛选)
- * @param redirect ==> 路由重定向地址
- * @param component ==> 视图文件路径
- * @param meta ==> 路由菜单元信息
- * @param meta.icon ==> 菜单和面包屑对应的图标
- * @param meta.title ==> 路由标题 (用作 document.title || 菜单的名称)
- * @param meta.activeMenu ==> 当前路由为详情页时,需要高亮的菜单
- * @param meta.isLink ==> 路由外链时填写的访问地址
- * @param meta.isHidden ==> 是否在菜单中隐藏 (通常列表详情页需要隐藏)
- * @param meta.isFull ==> 菜单是否全屏 (示例:数据大屏页面)
- * @param meta.isAffix ==> 菜单是否固定在标签页中 (首页通常是固定项)
- * @param meta.isKeepAlive ==> 当前路由是否缓存
- */
- const router = createRouter({
- history: routerMode[mode](),
- routes: [...staticRouter, ...errorRouter] as RouteRecordRaw[],
- strict: false,
- scrollBehavior: () => ({ left: 0, top: 0 })
- })
- // 全局注册 router
- export const setupRouter = (app: App<Element>) => {
- app.use(router)
- }
- /**
- * @description 重置路由
- **/
- export const resetRouter = (): void => {
- router.getRoutes().forEach(route => {
- const { name } = route
- if (name && !NO_RESET_WHITE_LIST.includes(name as string)) {
- router.hasRoute(name) && router.removeRoute(name)
- }
- })
- }
- export default router
|