Vue 3 为什么使用 Composition API?

首先对比一下两种API的写法

Options API

Vue 2 Options API:

html 复制代码
<template>
  <div>
    <p>{{ message }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Counter Value: 0'
    };
  },
  methods: {
    increment() {
      this.message = `Counter Value: ${parseInt(this.message.split(' ')[2]) + 1}`;
    }
  }
};
</script>

Options API

Vue 3 Composition API:

html 复制代码
<template>
  <div>
    <p>{{ message }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const message = ref(`Counter Value: ${count.value}`);

    const increment = () => {
      count.value++;
      message.value = `Counter Value: ${count.value}`;
    };

    return {
      message,
      increment
    };
  }
};
</script>

在Vue 2的Options API中,我们使用了data选项来定义响应式数据,methods选项来定义方法。在Vue 3的Composition API中,我们使用ref来创建响应式数据,将逻辑通过setup函数组织,然后返回需要在模板中使用的数据和方法。

Composition API可以解决的问题

  1. 模板中的数据来源不清晰: 在Composition API中,你可以在setup函数中明确地定义和组织组件中使用的数据和方法,而不是将它们分散在不同的选项中。这使得数据的来源更加清晰,提高了代码的可读性。
  2. 命名空间冲突: Composition API可以通过函数作用域来解决命名空间冲突的问题。在setup函数内部定义的变量和函数是局部的,不会污染全局命名空间,从而减少了命名冲突的可能性。

Composition API的优势

Composition API的优势在于更好的组织和重用逻辑,同时提供了更灵活的代码结构。

  1. 更灵活的组织代码: Composition API允许将组件的逻辑按功能组织,而不是按照选项的顺序。这使得在大型应用中更容易管理和维护代码,同时提高了代码的可读性和可维护性。
  2. 逻辑复用: Composition API提供了更好的逻辑复用机制。你可以将相关逻辑抽象成可复用的函数,并在不同组件中使用这些函数,从而避免了混杂在不同选项中的代码造成的复杂性。
  3. 更好的类型推导: 使用Composition API时,由于函数的方式更加明确,IDE和类型检查工具能够更好地推导出类型,提供更准确的代码补全和错误检测。
  4. 更好的响应式能力: Composition API中的ref、reactive等函数提供了更灵活的响应式能力,使得在处理复杂状态时更加方便。
  5. 生命周期函数的集中管理: 在Composition API中,生命周期函数不再作为选项,而是通过onBeforeMount、onMounted等函数来集中管理,使得组件的生命周期逻辑更清晰。

其他阅读

Vue3里为什么要用 Proxy 替代 defineProperty ?

相关推荐
恋猫de小郭2 分钟前
Flutter 大小核优化又被回滚,然后又开新提案?
android·前端·flutter
MyBili6 分钟前
Chrome扩展开发入门:从零打造实用浏览器插件
前端·chrome·谷歌浏览器·效率工具·浏览器插件·前端入门·扩展开发
FungLeo9 分钟前
成为全栈·Vue 管理后台篇·Vue3 + Vite + Naive UI:后台工程基座怎么搭
前端·vue.js·ui·typescript·vite·前端工程化·biome
聪明的笨猪猪1 小时前
实际工程问题:AI生成MyBatis批量操作的SQL超限与性能雪崩
java·经验分享·面试·ai编程
风骏时光牛马1 小时前
AI_Coding:智能代码创作引擎
前端
FungLeo1 小时前
成为全栈·Vue管理后台篇·<scriptsetup>:把页面拆成可读、可测的 Vue 组件
前端·javascript·vue.js·typescript·前端组件化·composition api·vue sfc
lsc_blog6 小时前
年终自评别贴提交记录,把技术产出讲成变化
数据库·面试·职场和发展·跳槽·求职招聘
GoAI12 小时前
DeepSeek Harness Memory (一)主流记忆插件总结
后端·算法·面试
卸任12 小时前
Vibe coding工具使用心得
前端·ai编程