$ router和$ route的区别
看源码解析区别
首先,使用vue.use()注册vue-router时,其相当于执行
去GitHub下载vue-router的源码,然后去查看install方法
发现并没有什么东西,其实并不是,要往下翻到最后,发现install又被赋值为install了
这里的install又是上面import的install.js
查看install.js,发现就是将框起来的赋值给index.js的install
翻到下面,可以知道我们为什么可以使用router-view和router-link(使用Vue.component()全局注册了)
知道了那两个怎么来的,再来告诉一个结论
所有的组件都继承自vue类的原型
知道这个结论有什么用呢?
可以在vue实例的原型上赋值一个属性,然后在组件中调用
发现真的可以,接下来还要知道一个东西
defineProperty
再来看vue-router里面install.js,发现导出的install方法的参数是Vue,而里面有一个方法
相当于在vue的原型上加上了$ router和$ route,而main.js里面的router
会传递到
然后就把main.js里面的router赋值到了$router。
那么是怎么传递的呢?这里就是上面的混入(mixin)代码
然后route是一样的,只不过route并没有定义,而是谁活跃谁就是route,这个老师没讲,我也不知道里面的原理!