Vue 3 为什么使用 Proxy?
- 弥补 Object.defineProperty 的两个不足:
- 动态创建的 data 属性需要用 Vue.set 来赋值,Vue 3 用了 Proxy 就不需要了。
- 基于性能考虑,Vue 2 篡改了数组的 7 个 API,Vue 3 用了 Proxy 就不需要了。
- defineProperty 需要提前递归地遍历 data 做到响应式,而 Proxy 可以在真正用到深层数据的时候再做响应式(惰性)
Vue 3 为什么使用 Composition API?
参考尤雨溪自己写的回答。
- Composition API 比 mixins、高阶组件、extends、Renderless Components 等更好,原因有三:
- 模版中的数据来源不清晰。
- 命名空间冲突。
- 出于性能考虑。
- 更适合 TypeScript
Vue 3 对比 Vue 2 做了哪些改动?
官方文档的描述。
变化比较显著的有:
-
createApp() 代替了 new Vue()
-
v-model 代替了以前的 v-model 和 .sync
-
根元素可以有不止一个元素了
-
新增 Teleport 传送门
-
destroyed 被改名为 unmounted 了(before 当然也改了)
-
ref 属性支持函数了
建议参考官方文档。