安装 vue-router
官网: https://router.vuejs.org/installation.html
pnpm add vue-router@4
使用 vue-router
创建自己的 router
| |
| import {createRouter, createWebHashHistory} from 'vue-router' |
| import type {RouteRecordRaw} from "vue-router" |
| |
| const routes: RouteRecordRaw[] = [ |
| { |
| path: '/', |
| redirect: "/dashboard/console", |
| meta: { |
| title: "首页面板" |
| }, |
| }, |
| { |
| path: '/demo', |
| component: () => import('@/view/demo/demo.vue'), |
| meta: { |
| title: "demo 页面" |
| }, |
| }, |
| { |
| path: '/login', |
| component: () => import('@/view/account/login.vue'), |
| meta: { |
| title: '登录' |
| }, |
| } |
| ] |
| |
| const router = createRouter({ |
| history: createWebHashHistory(), |
| routes |
| }) |
| |
| export default router; |
添加拦截器
| |
| |
| |
| |
| |
| import type { NavigationGuardNext, RouteLocationNormalized} from "vue-router"; |
| |
| const parseJSON = (source: string | object | null) => { |
| if(!source) return source; |
| if(source instanceof Object) return JSON.parse(JSON.stringify(source)); |
| if(typeof source === 'string') return JSON.parse(source); |
| } |
| |
| router.beforeEach(async (to: RouteLocationNormalized, from: RouteLocationNormalized, next: NavigationGuardNext) => { |
| |
| |
| const {meta} = to |
| |
| document.title = `back-end-${meta.title}` |
| |
| |
| const userStore = useUserStore() |
| const token = userStore.token; |
| const menu = userStore.menu; |
| const userMenuList: Array<RouteRecordRaw> = parseJSON(menu) |
| |
| if (!to.fullPath.includes('login') && !token) { |
| next({path: '/login'}) |
| } |
| |
| |
| if (userMenuList.filter(route => route.path === to.path).length !== 0) { |
| next() |
| } |
| |
| next("/demo") |
| }) |
| |
| router.afterEach((_, _, _) => { |
| |
| |
| }) |
在 main.ts 里挂载 vue-router
| import {createApp} from 'vue' |
| import App from './App.vue' |
| import router from "@/route/index.ts" |
| |
| const app = createApp(App); |
| app.use(router); |
| app.mount("#app"); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步