为什么使用Proxy
尤的官方博客有写,官方文档也有。
-
弥补Object.defineProperty的两个不足:
a. 动态创建的属性需要用vue.set来赋值,而proxy不需要如此。
b. 基于性能考虑,vue2篡改了数组的7个api,而proxy不需要如此。
-
defineProperty需要提前递归地遍历data,才能做到响应式。而proxy可以在真正用到深层数据的时候,再做响应式。我们称之为惰性的响应式。
为什么使用Composition API?
尤雨溪的官方博客: zhuanlan.zhihu.com/p/68477600
-
Composition API比mixins/高阶组件/extends更好,原因有三:
a. 模版中的数据来源不清晰(如有两个mixin)
b. 命名空间冲突
c. 性能问题(Renderless Components性能不好)
-
更适合TypeScript。
对比Vue2做了哪些改动?
- 用createApp()代替new Vue()
- 用v-model代替v-model和.sync
- 根元素可以有不止一个元素
- 新增了teleport
- 用unmounted代替destroyed
- ref属性支持函数了