Vue 路由守卫是在 Vue Router 中提供的一种功能,它允许您在导航到某个路由前、路由变化时或导航离开某个路由时执行代码。Vue 路由守卫提供了以下几种类型:
router.beforeEach 在进入路由前执行的钩子函数,它会接收三个参数:to(要进入的路由对象)、from(当前导航正要离开的路由对象)和 next(必须调用该函数才能进入下一个钩子)。
router.beforeResolve 在路由解析之前执行的钩子函数,也会接收 to、from 和 next 参数。与 beforeEach 的区别在于,该守卫在全局守卫中被最后调用,因此它在所有路由组件内的守卫和异步路由组件被解析之后才被调用。
router.afterEach 在进入路由后执行的钩子函数,它不接收 next 函数,也不能改变导航。
beforeEnter 在路由配置中定义的钩子函数,它会在路由被激活之前调用。它和全局前置守卫的参数一样,但是只对该路由生效。
·beforeRouteEnter:在路由进入时异步加载组件前调用。
·beforeRouteUpdate:在当前路由改变,但是该组件被复用时调用(例如,从 /users/1 导航到 /users/2 时)。
·beforeRouteLeave:在离开当前路由时调用。
要设置路由守卫,可以在路由实例的配置对象中添加相应的属性。例如,设置全局前置守卫可以这样写:
const router = new VueRouter({ routes: [...],})router.beforeEach((to, from, next) => { // ...})
使用场景包括但不限于: