Vue 3
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 属性支持函数了