黑马程序员技术交流社区

标题: 【上海校区】Vue核心插件 —— Vue Router [打印本页]

作者: 梦缠绕的时候    时间: 2018-8-21 09:25
标题: 【上海校区】Vue核心插件 —— Vue Router
Vue-router之集成

在项目目录新建config文件夹,新建router.js文件(Vue Router入口文件)和routes.js文件(路由配置文件),推荐项目结构

安装Vue Router插件

npm install vue-router -S

在 routes.js文件 中配置路由,以下为路由配置基础示例

在router.js文件 中编写入口文件代码,示例如下

推荐使用实例1的方式返回Vue Router实例,在服务端渲染的过程中,每次必须生成一个新的Vue Router,使用同一个Vue Router会导致内存溢出。客户端渲染倒是可以用同一个Vue Router,但还是推荐统一用实例1的方式返回Vue Router实例

定义好Vue Router的入口文件之后,接下来,要在项目的入口文件(index.js)中使用

Vue-router之配置

详解Vue Router的入口文件router.js的配置

Vue-router之路由参数传递

动态路由、路由传参、懒加载、命名视图、路由命名、路由元信息、子路由、路由钩子

在使用懒加载时,需要安装对应插件

npm i babel-plugin-syntax-dynamic-import -D

安装完成,修改.babelsrc

Vue-router之导航守卫

vue-router中的导航钩子按定义位置不同(执行时机也不同)分为全局钩子、路由级钩子和组件级钩子。

在项目入口文件(index.js)中的路由守卫,全局钩子

在 router.js文件 中的路由守卫,路由级钩子

在 .vue文件中 的路由守卫,组件级钩子

由其他页面进入有组件路由的页面:

global beforeEach → router beforeEnter → component beforeRouteEnter → global beforeResolve → global afterEach → mounted

由有组件路由的页面回到其他页面:

component beforeRouteLeave → global beforeEach → global beforeResolve → global afterEach

排除beforeRouteUpdate,其余六个导航钩子的执行时机其实很好理解。大体按照leave、before、enter、resolve、after的顺序并全局优先的思路执行。beforeRouteUpdate的触发是在动态路由情形下,比如 path: '/user/:userName' 这条路由,当页面不变更只动态的改变参数userName时,beforeRouteUpdate便会触发。

总结

使用vue组件拼凑成整个应用,每个页面是独立的,路由依靠链接跳转,会刷新页面。使用vue-router则可以不刷新页面加载对应组件,hash和history模式模拟路径变化,不刷新页面。



作者: 不二晨    时间: 2018-8-23 17:15
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2