路由模式
hash 模式 用 createWebHashHistory() 创建的:
HTML5 模式 用 createWebHistory() 创建 HTML5 模式. 需要服务端配置
1 | import { createRouter, createWebHashHistory } from 'vue-router' |
全局守卫
全局路由守卫 beforeEach
1 | const router = createRouter({ ... }) |
全局解析守卫 beforeResolve
这和 router.beforeEach
类似,因为它在 每次导航时都会触发,但是确保在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被正确调用。
1 | router.beforeResolve(async to => { |
router.beforeResolve
是获取数据或执行任何其他操作(如果用户无法进入页面时你希望避免执行的操作)的理想位置。
全局后置钩子 afterEach
没有next 入参,不会改变路由。可以用在路由完成后,修改页面标题等
1 | router.afterEach((to, from,failure) => { |
单个路由守卫
路由独享的守卫 beforeEnter
路由配置上定义 beforeEnter 守卫:
1 | const routes = [ |
1 | function removeQueryParams(to) { |
组件内守卫
你可以为路由组件添加以下配置:
beforeRouteEnter
//此时不能用this 还未创建组件实例beforeRouteUpdate
beforeRouteLeave
// 离开守卫 通常用来预防用户在还未保存修改前突然离开。该导航可以通过返回 false 来取消。
1 | const UserDetails = { |
$route 与 $router
1 | // this.$router 是路由实例。 |