vue 路由Router守衛
阿新 • • 發佈:2021-06-28
完整的導航解析流程
- 導航被觸發。
- 在失活的元件裡呼叫
beforeRouteLeave
守衛。 - 呼叫全域性的
beforeEach
守衛。 - 在重用的元件裡呼叫
beforeRouteUpdate
守衛 (2.2+)。 - 在路由配置裡呼叫
beforeEnter
。 - 解析非同步路由元件。
- 在被啟用的元件裡呼叫
beforeRouteEnter
。 - 呼叫全域性的
beforeResolve
守衛 (2.5+)。 - 導航被確認。
- 呼叫全域性的
afterEach
鉤子。 - 觸發 DOM 更新。
- 呼叫
beforeRouteEnter
守衛中傳給next
的回撥函式,建立好的元件例項會作為回撥函式的引數傳入。
import Vue from 'vue' import Router fromView Code'vue-router' Vue.use(Router) let router = new Router({ routes: [ { path: '/', name: 'Home', component: () => import('../page/home') }, { path: '/ads', name: 'Ads', component: () => import('../page/ads'), }, { path: '/login', name:'Login', component: () => import('../page/login') }, { path: '/detail', name: 'Detail', component: () => import('../page/detail'), // 路由獨享守衛 beforeEnter: (to, from, next) => { console.log(to, 'to', from, 'from', 'beforeEnter') next() } }, ] })//全域性前置路由守衛 router.beforeEach((to, from, next) => { console.log(to, 'to', from, 'from', 1) console.log(to.name === 'Ads', from.name == 'Login') next() }) //全域性解析守衛 router.beforeResolve((to, from, next) => { console.log(to, 'to', from, 'from', 2) next() }) //全域性後置鉤子 router.afterEach((to, from) => { console.log(to, 'to', from, 'from', 3) }) export default router;