Vue2对于复杂组件的代码难以维护。
怎么理解这句话呢?在使用Vue的过程中可以发现,各部分是按类型来区分的,比如data、methods等等。这就使得实现一种功能的代码分散在不同的地方,当功能越来越多越来越复杂的时候就很难整合维护了。而且不同功能的数据可能互相依赖,对后续的维护增加了很多难度。
针对这一点,Vue2可以采取Mixin来进行改进。把代码归为一类然后使用。但是:
所以就出现了Composition API(之前在学习Composition API的时候也看到过,说是Mixin的全面升级)
setup(英文为准备的意思)是无法访问到this的,因为他是在Vue实例初始化之前执行的。
Vue2中使用的是ES5中的语法Object.defineProperty()来实现响应式的。需要知道具体的属性名。(所以data无法检测property的添加或移除)
Object.defineProperty(data,'count',{
get(){},
set(){},
})
Vue3中使用的是Proxy代理,不需要知道具体的属性名,所以已有的和新增的都会有响应效果。并且有更多的拦截功能。(所以可以对添加或移除的也添加响应式)
new Proxy(data,{
get(key){},
set(key,value){}
})