Composition API 是 Vue3 所推出以解决 Vue2 Options API的一些限制。

3个限制

  1. 当组件变得庞大复杂时,代码可阅读性大大降低
  2. 代码复利都是有比较明显的缺陷
    1. Mixins
      • 优点
        1. 可以根据不同的功能来归类
      • 缺点
        1. 比较容易产生冲突
        2. 复用性不是特别高
    2. Mixin Factories
      • 优点
        1. 可复用性大大提高
      • 缺点
        1. 命名空间需要有严格的规范
        2. 暴露的属性需要进入Mixin工厂函数定义文件里查看
        3. 不能动态生成
    3. Scoped-slot
      • 优点
        1. 解决Mixin的大多数问题
      • 缺点
        1. 配置需要模板完成,理想的状态模板里只定义需要渲染的内容
        2. 缩进降低代码的可阅读性
        3. 暴露的属性只能够在模板里使用
        4. 3个组件比1个组件,性能开销上升
  3. TypeScript的支持非常有限

    1,2点可以由 Composition Functions 来体现

提取代码,做代码复用的解决方案 Composition API

  • 优点
    1. 代码量减少,能够更容易地把功能从组件内部提取到一个函数里
    2. 因为使用是函数,便用的现有的知识
    3. 更加灵活
    4. 智能感知、自动补全等编辑器里提示的功能都能够帮助你去编写代码
  • 缺点
    1. 学习low-level API知识,来定义Composition Functions
    2. 3.0定义组件的方式变成了2种