Composition API

2026-08-26

Composition API(组合式 API / <script setup>)做对比

组合式 API(Vue3 主流)

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="add">+1</button>
  </div>
</template>

<script setup>
import {ref, computed, watch, onMounted} from 'vue'

// count相关的所有逻辑全部写在一起,聚合到一块
const count = ref(0)
const add = () => count.value++
const doubleCount = computed(()=> count.value *2)
watch(count,(newVal)=>{
  console.log("count变了",newVal)
})
onMounted(()=>{
  console.log("组件挂载完成")
})
</script>

两者核心差异

表格

Options API(选项式)Composition API(组合式 script setup)
代码组织按类型拆分:data/methods/computed按业务逻辑聚合,相关代码放一起
访问变量通过this.xxx不需要this;脚本内 ref 要.value
适用场景简单组件、老 Vue2 项目复杂大型组件,逻辑多的页面
支持版本Vue2 + Vue3 都支持Vue3 主推;Vue2.7 才支持

举个通俗例子理解

需求:做一个计数器,包含变量、加方法、监听、计算属性。

  • Options API:把所有变量放 A 抽屉,所有函数放 B 抽屉,监听放 C 抽屉。想用一套计数器逻辑,要分别去 A/B/C 抽屉拿代码。
  • Composition API:把计数器整套逻辑打包放在一起,需要直接复制这一整块。

现实工作场景

  1. 看老 Vue2 项目:全是 Options API,必须能读懂
  2. Vue3 新项目:优先写<script setup>组合式 API;也可以写 Options API,但不推荐。
  3. Vue3 不是抛弃 Options API,只是提供更好的新写法。

补充:Vue3 里你可以同一个项目,一部分组件写 Options,一部分写 script setup,两种写法可以共存。