-
Notifications
You must be signed in to change notification settings - Fork 350
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vue-router 实现 -- install #23
Comments
多谢分享!最后部分的下一篇文章:vue-router 实现 -- new VueRouter(options),链接给错了,给成了当前这篇文章的链接了~ |
Vue.uti.defineReactive 拼写错了... |
@Dream4ever @byr-gdp 谢谢,已更正 |
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Vue 通过 use 方法,加载
VueRouter
中的 install 方法。install 完成 Vue 实例对 VueRouter 的挂载过程。下面我们来分析一下具体的执行过程:在构造
Vue
实例的时候,我们会传入router
对象:此时的
router
会被挂载到 Vue 的跟组件this.$options
选项中。在 option 上面存在 router 则代表是根组件。如果存在this.$options
,则对_routerRoot
和_router
进行赋值操作,之后执行_router.init()
方法。为了让 _router 的变化能及时响应页面的更新,所以又接着又调用了
Vue.util.defineReactive
方法来进行get
和set
的响应式数据定义。然后通过
registerInstance(this, this)
这个方法来实现对router-view
的挂载操作:因为只有 router-view 组件定义了
data.registerRouteInstance
函数。data.registerRouteInstance
主要用来执行 render 的操作,创建 router-view 组件的 Vnode :后续步骤便是为Vue全局实例注册2个属性
$router
和$route
;以及组件RouterView
和RouterLink
。关于
Vue.config.optionMergeStrategies
参考 自定义选项合并策略。下一篇我们会接着介绍一下 VueRouter 实例化的过程有兴趣可以移步vue-router 实现 -- new VueRouter(options)
The text was updated successfully, but these errors were encountered: