vue路由
// 默认没有菜单
var isMenu = false
// 路由跳转前触发
router.beforeEach((to, from, next) => {
// 加载进度条开始
NProgress.start()
// 去获取缓存中的用户信息
const info = vueCookies.get('userInfo')
// 如果存在
if (info) {
// 存在-判断是否去往登录页面
if (to.path == '/login') {
// 强行指向某一个页面
next({ path: '/home' })
} else {
// 如果不是去登录页面,说明路由正常跳转,判断是否存在路由
if (isMenu) {
// 如果存在正常跳转
next()
} else {
try {
// 没有就去获取路由,这里可以通过接口动态获取
const orterRouters = routers
// 拿到路由给变量改为true,可将该变量放入vuex中
isMenu = true
// 拿到变量去创建路由表
orterRouters.forEach((v) => {
router.addRoute(v)
})
// 判断是否去往 路径 /
if (to.path == '/') {
// 重定向到 /home 具体依实际为准
next({ path: '/home' })
} else {
// 否者说明正常点击调转
next({
...to,
replace: true,
})
}
// throw new Error('无路由')
} catch (error) {
// 捕获到错误直接跳转登录页面
next({
path: '/login',
})
}
}
}
} else {
//如果是没有用户信息,去往登录页面
if (to.path === '/login') {
//运行
next()
} else {
//没有用户信息,想跳转其他页面强行跳转登录
next(`/login`)
}
}
})
标签:跳转,else,path,注解,next,路由,页面
From: https://www.cnblogs.com/newBugs/p/17002859.html