面试题之Vue3

104 阅读1分钟

为什么使用Proxy

尤的官方博客有写,官方文档也有。

  1. 弥补Object.defineProperty的两个不足:

    a. 动态创建的属性需要用vue.set来赋值,而proxy不需要如此。

    b. 基于性能考虑,vue2篡改了数组的7个api,而proxy不需要如此。

  2. defineProperty需要提前递归地遍历data,才能做到响应式。而proxy可以在真正用到深层数据的时候,再做响应式。我们称之为惰性的响应式。

为什么使用Composition API?

尤雨溪的官方博客: zhuanlan.zhihu.com/p/68477600

  1. Composition API比mixins/高阶组件/extends更好,原因有三:

    a. 模版中的数据来源不清晰(如有两个mixin)

    b. 命名空间冲突

    c. 性能问题(Renderless Components性能不好)

  2. 更适合TypeScript。

对比Vue2做了哪些改动?

  1. 用createApp()代替new Vue()
  2. 用v-model代替v-model和.sync
  3. 根元素可以有不止一个元素
  4. 新增了teleport
  5. 用unmounted代替destroyed
  6. ref属性支持函数了