Vue Router 笔记(Vue2)
vue-router 全局有三个守卫 • router.beforeEach:全局前置守卫,进入路由之前 • router.beforeResolve:全局解析守卫,在 beforeRouteEnter 调用之后调用 • router.afterEach:全局后置钩子,进入路由之后
全局路由守卫
import Vue from 'vue'
import Router from 'vue-router'
import route from './router'
Vue.use(Router)
const router = new Router({
routes: route // 路由列表
})
// 模拟用户登录与否
const HAS_LOGIN = true
// 全局前置守卫
// 在Router实例上进行守卫
router.beforeEach((to, from, next) => {
// to和from都是路由实例
// to:即将跳转到的路由
// from:现在的要离开的路由
// next:函数
// 如果未登录,就跳到登录页,如果登录了,选择哪个页面跳到哪个页面;如果登录了还去了login页面,就跳到首页。
if (to.name !== 'login') {
if (HAS_LOGIN) next()
else next({ name: 'login' })
} else {
if (HAS_LOGIN) next({ name: 'home' })
else next()
}
})
// 全局解析守卫
router.beforeResolve((to, from, next) => {})
// 全局后置钩子
router.afterEach((to, from) => {})
export default router
大约 3 分钟