vue.use(VueRouter) 咱们经常看到vue上面会通过use调用一些方法,那么这些方法到底执行了什么呢?
其实每个第三方插件都是一个具有install 方法的类,在vue.use(VueRouter)的那一刻,会执行VueRouter里面的install方法。如果没有install方法会把plugin当成函数来执行
install方法里面有这个 mixin 老朋友。mixin其实很简单就是将对象合并在一起的方法 vue.mixin({
beforeCreate(){
/*混入逻辑*/
}
})
翻了源码发现setUpListeners,它主要做两件事第一个监听hashChage事件,另一个就是路由切换滚动位置的处理
vue2 defineProperty 可以监听数组 以下标作为key 但是新增的就监听不了了 需要手动监听 另外 改变数组key会触发get set 所以的重写
vue3 proxy可以监听数组 包括新增的 但是改变数组key依旧会触发get set 还得重写 并且proxy只能监听一层 嵌套的监听不了 就得手动返回新proxy