【vue高频面试题】第6题:Vue3 中 Composition API 和 Options API 有什么区别?为什么 Composition API 更推荐

问:Vue3 中 Composition API 和 Options API 有什么区别?为什么 Composition API 更推荐?


一、标准回答(面试官期望你说到的点)

1)代码组织方式不同

Options API

按选项组织(data、methods、computed、watch...),逻辑分散。

javascript 复制代码
export default {
  data() { return { count: 0 }},
  methods: { add() { this.count++ }},
  watch: { count() {} }
}

Composition API

按业务逻辑组织(功能函数 + 组合逻辑),逻辑集中。

xml 复制代码
<script setup>
import { ref } from 'vue'

const count = ref(0)
function add() { count.value++ }
</script>

结论:Composition API 更适合大项目、复杂逻辑复用。


2)逻辑复用方式不同

Options API

依赖 mixins,但有问题:

  • 变量来源不清晰(冲突)
  • 多个 mixin 很容易不知道数据从哪里来

Composition API

复用逻辑靠 Composable(封装函数)

javascript 复制代码
// useCounter.js
export function useCounter() {
  const count = ref(0)
  const inc = () => count.value++
  return { count, inc }
}

业务代码变得更清晰。


3)类型支持更好(TS 体验)

Composition API 是天然为 TypeScript 设计的,

Options API 兼容不友好。


4)Tree-shaking 能力更强

Composition API 使用纯函数 + ES 模块

→ 未用到的代码可以被摇树优化

→ 构建体积更小(Vue3 最初的核心目的之一)


5)可读性在大型项目更好

跨功能逻辑可以集中写在一起,避免 Options API 的"跳来跳去看逻辑"。


二、适用场景对比(面试官喜欢问)

场景 优选
小项目/简单逻辑 Options API
大型项目/多人协作 Composition API
需要高度抽象复用 Composition API
新项目 Composition API
Typescript 项目 Composition API

三、典型代码对比(快速理解差异)

Options API(逻辑分散)

xml 复制代码
<script>
export default {
  data() {
    return { count: 0 }
  },
  methods: {
    add() {
      this.count++
    }
  }
}
</script>

Composition API(逻辑聚合)

xml 复制代码
<script setup>
import { ref } from 'vue'

const count = ref(0)
const add = () => count.value++
</script>

四、深挖追问(面试官必问)


追问 1:Composition API 有没有缺点?

有:

  1. 初学者写法自由,容易写出失控代码
  2. 可读性在小项目不如 Options API
  3. 所有变量都暴露给 template,可能混乱

会回答缺点 = 加分。


追问 2:Composition API 会不会导致组件逻辑过大?

会,所以必须拆成 Composable 函数

javascript 复制代码
// useUser.js
export function useUser() {
  const user = ref(null)
  const loadUser = () => {}
  return { user, loadUser }
}

结构化拆分是 Composition API 的核心价值。


追问 3:Options API 会被废弃吗?

不会。

Vue 官方声明 永远支持 Options API


追问 4:Composition API 和 setup 写法的生命周期怎么记?

Options API Composition API(setup)
created (setup 中执行)
mounted onMounted
updated onUpdated
unmounted onUnmounted
beforeMount onBeforeMount
beforeUpdate onBeforeUpdate
beforeUnmount onBeforeUnmount

这是面试必考点。


追问 5:Composition API 是否一定性能更好?

不一定。

二者性能几乎相同,主要差异在可维护性。


五、killer 问题(高分回答必杀技)

❓ 为什么 Vue3 推 Composition API,而不是继续强化 Options API?

可以这么回答(非常加分):

Vue3 的目标之一是解决组件逻辑分散、复用困难的问题。

Options API 天生分散(data/methods/watch 分开),工程复杂后难维护。

Composition API 将逻辑聚合到函数中,更适合大型工程、跨项目复用、TypeScript 支持、Tree-shaking 优化。

所以 Vue3 并不是"替换 Options API",而是"补足 Vue2 的长痛点"。


六、最终总结(1 分钟背诵版)

Composition API 更灵活、更可复用、更支持 TS、更利于代码组织。
Options API 逻辑分散、复用困难,更适合小项目。
Vue3 推荐 Composition API,但官方保证 Options API 不会废弃。

相关推荐
用户69371750013849 分钟前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦13 分钟前
Web 前端搜索文字高亮实现方法汇总
前端
用户693717500138413 分钟前
Room 3.0:这次不是升级,是重来
android·前端·google
似水明俊德1 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
漫随流水2 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
无限大63 小时前
AI实战03:Java开发岗专属工作流|用AI辅助代码审查与文档生成
面试
踩着两条虫3 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
程序员雨果4 小时前
软件测试工程师:面试题与经验分享
软件测试·面试·职场和发展
Yvonne爱编码4 小时前
2026年计算机专业求职指南:从简历优化到技术面试通关【科普类】
面试·职场和发展
测试界的飘柔4 小时前
月薪 20k 的性能测试面试题大曝光,让你如何迅速拿下 offer!
自动化测试·软件测试·功能测试·面试·职场和发展·职场经验·找工作