常见基础问题(Vue3)

130 阅读1分钟

Vue 3 为什么使用 Proxy?

  • 弥补 Object.defineProperty 的两个不足:
    1. 动态创建的 data 属性需要用 Vue.set 来赋值,Vue 3 用了 Proxy 就不需要了。
    2. 基于性能考虑,Vue 2 篡改了数组的 7 个 API,Vue 3 用了 Proxy 就不需要了。
  • defineProperty 需要提前递归地遍历 data 做到响应式,而 Proxy 可以在真正用到深层数据的时候再做响应式(惰性)

Vue 3 为什么使用 Composition API?

参考尤雨溪自己写的回答

  • Composition API 比 mixins、高阶组件、extends、Renderless Components 等更好,原因有三:
    1. 模版中的数据来源不清晰。
    2. 命名空间冲突。
    3. 出于性能考虑。
  • 更适合 TypeScript

Vue 3 对比 Vue 2 做了哪些改动?

官方文档的描述

变化比较显著的有:

  1. createApp() 代替了 new Vue()

  2. v-model 代替了以前的 v-model 和 .sync

  3. 根元素可以有不止一个元素了

  4. 新增 Teleport 传送门

  5. destroyed 被改名为 unmounted 了(before 当然也改了)

  6. ref 属性支持函数了

建议参考官方文档。