前置路由守卫: beforeEach
路由切换之前被调用
全局解析守卫:beforeResolve
在每次导航时就会触发,但是确保在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后 2,解析守卫就被正确调用,如确保用户可以访问自定义 meta 属性requiresCamera
的路由:
router.beforeResolve(async (to) => {if (to.meta.requiresCamera) {try {await askForCameraPermission();} catch (error) {if (error instanceof NotAllowedError) {// ... 处理错误,然后取消导航return false;} else {// 意料之外的错误,取消导航并把错误传给全局处理器throw error;}}}
});
router.beforeResolve
是获取数据或执行任何其他操作(如果用户无法进入页面时你希望避免执行的操作)的理想位置。
afterEach
路由切换之后被调用requiresCamera
的路由:2.独享路由守卫
const router = new VueRouter({routes: [{path: '/foo',component: Foo,beforeEnter: (to, from, next) => {// ...},},],
});
3.组件內路由守卫 可以在组件内使用者两个钩子
beforeRouteEnter (to, from, next) {}
beforeRouteLeave (to, from, next) {}
beforeRouteLeave
守卫。beforeEach
守卫。beforeRouteUpdate
守卫(2.2+)。beforeEnter
。beforeRouteEnter
。beforeResolve
守卫(2.5+)。afterEach
钩子。beforeRouteEnter
守卫中传给 next
的回调函数,创建好的组件实例会作为回调函数的参数传入。history 模式 /
: 使用pushState
和replaceState
,通过这两个 API 可以改变 url 地址不发生请求,popState
事件
hash 模式#
:
hash 是 URL 中 hash(#)及后面的那部分,常用作锚点在页面内进行导航,改变 hash 值不会随着 http 请求发送给服务器,通过hashChange
事件监听 URL 的变化,可以用他来实现更新页面部分内容的操作
上一篇:动态规划-不同路径