kun-galgame-vue/src/router/index.ts

96 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-05-02 18:20:22 +00:00
import LoginVue from '@/views/login/Login.vue'
2023-04-20 08:04:08 +00:00
import {
type RouteRecordRaw,
createRouter,
createWebHashHistory,
createWebHistory,
2023-05-02 18:20:22 +00:00
} from 'vue-router'
declare module 'vue-router' {
interface RouterMeta {
title: string
transition: string
}
}
2023-04-20 08:04:08 +00:00
/** 常驻路由 */
export const constantRoutes: RouteRecordRaw[] = [
2023-05-02 09:44:23 +00:00
// KUNGalgame 主页
{
2023-05-02 18:20:22 +00:00
name: 'KUN',
path: '/',
component: () => import('@/views/Home/KUNGalgameMainPage.vue'),
meta: {
title: '主页',
transition: 'animate__backInUp',
},
2023-05-02 09:44:23 +00:00
},
// KUNgalgame 帖子详情页
2023-04-20 08:04:08 +00:00
{
2023-05-02 18:20:22 +00:00
name: 'Topic',
path: '/topic',
2023-05-01 15:06:46 +00:00
// 路由懒加载
2023-05-02 18:20:22 +00:00
component: () => import('@/views/topic/KUNGalgameTopicPage.vue'),
meta: {
title: '帖子',
transition: 'animate__backInUp',
},
2023-04-20 15:34:48 +00:00
},
2023-05-02 09:44:23 +00:00
// KUNGalgame 登陆页
2023-04-20 15:34:48 +00:00
{
2023-05-02 18:20:22 +00:00
name: 'Login',
path: '/login',
component: () => import('@/views/login/Login.vue'),
meta: {
title: '登录',
transition: 'animate__backInUp',
},
2023-05-02 09:44:23 +00:00
},
// KUNGalgame 技术交流页
{
2023-05-02 18:20:22 +00:00
name: 'Technology',
path: '/technology',
component: () => import('@/views/login/Login.vue'),
meta: {
title: '技术交流',
transition: 'animate__backInUp',
},
2023-05-02 09:44:23 +00:00
},
// KUNGalgame 帖子池页
{
2023-05-02 18:20:22 +00:00
name: 'Pool',
path: '/pool',
component: () => import('@/views/login/Login.vue'),
meta: {
title: '帖子池',
transition: 'animate__backInUp',
},
2023-04-20 08:04:08 +00:00
},
2023-05-02 18:20:22 +00:00
]
2023-04-20 08:04:08 +00:00
const router = createRouter({
history:
2023-05-02 18:20:22 +00:00
import.meta.env.VITE_ROUTER_HISTORY === 'hash'
2023-04-20 08:04:08 +00:00
? createWebHashHistory(import.meta.env.VITE_PUBLIC_PATH)
: createWebHistory(import.meta.env.VITE_PUBLIC_PATH),
routes: constantRoutes,
2023-05-02 18:20:22 +00:00
})
2023-04-20 08:04:08 +00:00
/** 重置路由 */
export function resetRouter() {
// 注意:所有动态路由路由必须带有 Name 属性,否则可能会不能完全重置干净
try {
router.getRoutes().forEach((route: { name: any; meta: any }) => {
2023-05-02 18:20:22 +00:00
const { name, meta } = route
2023-04-20 08:04:08 +00:00
if (name && meta.roles?.length) {
2023-05-02 18:20:22 +00:00
router.hasRoute(name) && router.removeRoute(name)
2023-04-20 08:04:08 +00:00
}
2023-05-02 18:20:22 +00:00
})
2023-04-20 08:04:08 +00:00
} catch (error) {
// 强制刷新浏览器也行,只是交互体验不是很好
2023-05-02 18:20:22 +00:00
window.location.reload()
2023-04-20 08:04:08 +00:00
}
}
2023-05-02 18:20:22 +00:00
export default router