Vue源码分析(5)—— Router

1. 安装过程

  1. 通过mixin全局注入beforeCreate钩子,组件初始化时注入_routerRoot
  2. 使用Object.defineproperty挂载$router$route参数
  3. 全局注入RouterViewRoterLink组件
  4. 定义合并策略

2. 实例化Router

  1. 解析配置生成matcher
  2. 判断环境实例化history对象

在这里插入图片描述

3. 路由跳转

  1. 根组件实例化时触发beforeCreate钩子,调用Routerinit方法,绑定全局路由监听事件,进行首次路由跳转并响应式处理this._route
  2. 触发路由跳转后,执行Router.history上的跳转方法
  3. 解析路由,提取钩子,执行钩子,确认并更新路由触发响应式,修改url,触发after钩子
  4. 下一事件循环响应式触发视图更新,渲染新路由组件

在这里插入图片描述

4. 路由渲染

  1. RouterView内部定义了render函数,每次重新渲染时执行,会根据当前的route解析出对应的组件,用对应的组件代替自身去渲染。如无组件则渲染成注释节点

路由传参的props方式则是在匹配出组件之后并解析出参数,最终以组件data的方式参与组件的vnode创建实现props传参

  1. RouterLink内部定义了render函数,每次重新渲染时执行,根据传参定义事件,最终渲染成a标签并绑定对应事件

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44844528/article/details/106725052