根据项目的需求,越来越多的项目都需要进行权限的控制和管理。\
vue-router @4.x和vue-router @3.x的区别:
1、new Router不再是类定义了,而是变成了方法,
import Router from 'vue-router'
new VueRouter({
mode: 'history',
scrollerBehavior: () => {y: 0}),
routes: baseRouters
})
=>
import {createRouter, creteWebHistory } from 'vue-router
const router = createRouter({
history: createWebHistory(), // createMemoryHistory
routes: []
})
// ssr 手动传递适当的历史记录
let history = isServe ? createMemoryHistory() : createWebHistory() let router = createRouter({ routes, history }) // someWhere in your serve-entry.js router.push(request.url) router.isReady().then(() =>{})
2、移除*捕获异常路由,新增路由匹配原则:
const routes = [
{path: '/:pathMatch(.*)*', name: 'no-found', component: NotFound },
{ path: '/:patchMatch(.*)', name: 'bad-no-found', component: NotFound }
]
router.resolve({
name: 'no-found',
params: { pathMatch: ['not', 'found']
}).href
思路:
1、基础路由设置:
const baseRoutes = [ { name: 'Login', path: '/login', component: () => import('@/views/login.vue') }, { name: '404', path: '/404', component: () => import('@/views/login.vue') } ]
2、后端获取路由目录:
// 通过后端请求获取路由目录,并添加到路由路径文件中 const newRoutes = [ { name: 'Home', path: '/home', component: () => import( '@/views/home.vue'), meta: { title: '首页', // 菜单名称 rules: [], // 菜单权限-增、删、改、查 icon: '', // 菜单图标 auth: '' // 路由验证auth } }, { name: 'auth', path: '/auth', component: () => import( '@/views/auth.vue'), meta: { title: '权限管理', rules: ['Add', 'Del', 'Edit'], icon: '', auth: '' }, children: [ { name: 'role', path: '/role', component: () => import( '@/views/role.vue'), meta: { title: '角色管理', rules: ['Add', 'Edit', 'Del'], icon: '', auth: '' } }, { name: 'menu', path: '/menu', component: () => import( '@/views/menu.vue'), meta: { title: '菜单管理', rules: ['Add', 'Edit', 'Del'], icon: '', auth: '' } } ] }, ]
route.addRoutes(newRoutes)
3、更新路由