Vue Router 学习整理
Vue Router 是Vue.js的官方路由。它与Vue.js 核心深度集成,让用Vue.js构建单页应用变得轻而易举。功能包括:
- 嵌套路由映射
- 动态路由选择
- 模块化、基于组件的路由配置
- 路由参数、查询、通配符
- 展示由Vue.js的过度系统提供的过渡效果
- 细致的导航控制
- 自动激活CSS类的链接
- HTML5 history 模式或 hash 模式
- 可定制的滚动行为
- URL 的正确编码
router-link:
使用一个自定义组件 router-link 来创建链接。这使得 Vue Router 可以在不重新加载页面的情况下更改 URL,处理 URL 的生成以及编码。
router-view:
router-view 将显示与 url 对应的组件。可以把它放在任何地方,以适应布局。
全局前置守卫:beforeEach
当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫resolve之前一直处于等待中。
每个守卫方法接收两个参数:
· to: 即将要进入的目标;
· from:当前导航正要离开的路由。
可以返回的值如下:
· false: 取消当前的导航。如果浏览器的URL改变了,那么URL地址会重置到from路由对应的地址。
· 一个路由地址:
全局解析守卫:beforeResolve
全局后置钩子:afterEach
路由独享守卫:beforeEnter
组件内的守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave
完整的导航解析流程:
1. 导航被触发;
2. 在失活的组件里调用 beforeRouteLeave 守卫;
3. 调用全局的 beforeEach 守卫;
4. 在重用的组件里调用 beforeRouteUpdate 守卫(2.2+);
5. 在路由配置里调用 beforeEnter ;
6. 解析异步路由组件;
7. 在被激活的组件里调用 beforeRouteEnter ;
8. 调用全局的 beforeResolve 守卫(2.5+);
9. 导航被确认;
10. 调用全局的 afterEach 钩子;
11. 触发 DOM 更新;
12. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。