Vue3

Vue3 为什么使用 Proxy

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

Vue3 为什么使用 Composition API

  1. Composition API 相比 mixins、高阶组件、Renderless Components更好,因为这些模式存在下面三个问题
  • 模板中数据来源不清晰。当一个组件中使用了多个mixin,只看模板很难分清一个属性到底来自哪个mixin
  • 命名空间冲突。不同开发者开发的mixin无法保证不会正好用到一样的属性或方法名
  • 性能。
  1. 更适合 TypeScript

推荐阅读 => 尤雨溪 Vue Function-based API RFC

推荐阅读 => 组合API问题解答

相比于 Vue2 做了哪些改动

  1. 根元素可以不只有一个
  2. createApp()代替了new Vue()
  3. v-model代替了以前的v-model.sync
  4. 新增 Teleport 传送门
  5. ref属性支持函数
  6. destroyed 改名为 unmounted、beforeDestroy 改名为 beforeUnmount

推荐阅读 => 非兼容的变更

0%