1. 安装过程
- 通过
mixin
全局注入beforeCreate
钩子,组件初始化时注入_routerRoot
- 使用
Object.defineproperty
挂载$router
和$route
参数 - 全局注入
RouterView
和RoterLink
组件 - 定义合并策略
2. 实例化Router
- 解析配置生成
matcher
- 判断环境实例化
history
对象
3. 路由跳转
- 根组件实例化时触发
beforeCreate
钩子,调用Router
的init
方法,绑定全局路由监听事件,进行首次路由跳转并响应式处理this._route
- 触发路由跳转后,执行
Router.history
上的跳转方法 - 解析路由,提取钩子,执行钩子,确认并更新路由触发响应式,修改
url
,触发after
钩子 - 下一事件循环响应式触发视图更新,渲染新路由组件