Vue Composition API

Vue3 用于组织组件逻辑与复用逻辑的核心开发范式。

#tech / dev / frame #resource / vue3 #type / concept #status / growing

[!info] related notes

Vue Composition API

Composition API 是 Vue3 推荐的逻辑组织方式。它把组件代码从“按选项分类”切换为“按功能聚合”。

一句话定义

如果说 Options API 是把代码分散到 datamethodscomputed 这些栏目里,那么 Composition API 是把同一件业务相关的状态、派生值和操作放在一起。

它解决什么问题

  • 复杂组件里,相关逻辑不再被切碎到不同配置项里
  • 逻辑复用可以通过 composable 直接抽函数完成
  • TypeScript 推导与类型组织更自然
  • 更适合写中大型组件和可复用业务逻辑

最常见的使用形式

现在的主流组合是:Vue3 + Composition API + script setup

<script setup lang="ts">
import { computed, ref } from 'vue'

const count = ref(0)
const double = computed(() => count.value * 2)

function increment() {
  count.value++
}
</script>

和 Options API 的核心差异

  • Options API 按配置项分区
  • Composition API 按功能聚合
  • Options API 更像“组件配置”
  • Composition API 更像“响应式函数式组织方式”

什么时候特别适合用它

  • 表单逻辑、请求逻辑、分页逻辑、权限逻辑需要复用时
  • 组件很大,状态和方法已经按功能分不清时
  • 你希望把业务逻辑提炼到 useXxx() composable 时

常见组成部分

  • 响应式状态:refreactive
  • 派生值:computed
  • 副作用:watchwatchEffect
  • 生命周期钩子:onMountedonUnmounted
  • 组合式函数:useRequestusePaginationuseUser 之类的 composable

常见误区

  • 以为 Composition API 只是把代码从 Options API 改成另一种语法
  • 组件里什么都往 setup() 里堆,但没有按功能分段
  • 逻辑复用时继续依赖过重的 mixin,而不是抽 composable

一句判断题

当你关心的是“某个功能需要哪些状态、派生值和动作”,而不是“这段代码属于 data 还是 methods”,你就已经在用 Composition API 的思维了。

面试要点

来自 vue-composition-api-vs-options-api-interview-question 的面试视角整理。

一句话回答

Options API 是按 datamethodscomputed 这类配置项分类组织代码,Composition API 则更强调把同一功能相关的状态、派生值和操作放在一起。

最稳的回答主线

Options API

  • 上手直观
  • 小组件里结构清晰
  • 复杂组件里相关逻辑容易分散

Composition API

  • 更适合按功能聚合逻辑
  • 更适合抽 composable 做复用
  • 在复杂业务和 TypeScript 场景里通常更顺手

面试里一句很稳的话

Vue3 并不是废弃了 Options API,而是给了更适合复杂组件组织的新选择。

最短记忆方式

Options API 按类别拆代码,Composition API 按功能聚合代码。

创建于 2026/3/19 更新于 2026/5/27