Vue 选项式 API vs 组合式 API:区别全解析
前言如果你刚开始学习 Vue 3你可能会听到两个词选项式 API和组合式 API。它们是什么有什么区别应该用哪个这篇文章用最简单的方式讲清楚。一、什么是选项式 API选项式 API 是 Vue 2 时代的经典写法也是 Vue 3 仍然支持的写法。特点按类型分组代码按照data、methods、computed等选项分类export default { data() { return { count: 0, name: 张三 } }, methods: { add() { this.count }, sayHi() { console.log(我是 this.name) } }, computed: { double() { return this.count * 2 } }, mounted() { console.log(组件挂载了) } }关键点✅ 结构清晰新手友好✅ 每个选项有明确的用途❌ 相关的代码被分散到不同位置❌ 需要用this访问数据二、什么是组合式 API组合式 API 是 Vue 3 新增的写法更灵活、更强大。特点按功能分组相关的代码写在一起import { ref, computed, onMounted } from vue export default { setup() { // 计数相关功能 const count ref(0) const double computed(() count.value * 2) const add () { count.value } // 用户信息相关功能 const name ref(张三) const sayHi () { console.log(我是 name.value) } // 生命周期 onMounted(() { console.log(组件挂载了) }) return { count, double, add, name, sayHi } } }更简洁的script setup写法推荐script setup import { ref, computed, onMounted } from vue // 计数相关功能 const count ref(0) const double computed(() count.value * 2) const add () count.value // 用户信息相关功能 const name ref(张三) const sayHi () console.log(我是 name.value) // 生命周期 onMounted(() console.log(组件挂载了)) /script关键点✅ 相关代码组织在一起✅ 不需要this✅ 更容易复用逻辑Composables❌ 需要理解响应式 APIref、reactive三、核心区别this的使用选项式 API到处用thisexport default { data() { return { name: 张三, count: 0 } }, methods: { sayHi() { // 必须用 this 访问 data console.log(this.name) }, add() { // 必须用 this 访问其他数据 this.count } } }为什么需要this因为data、methods、computed写在不同的地方它们之间需要this来连接。组合式 API不需要thisimport { ref } from vue export default { setup() { const name ref(张三) const count ref(0) const sayHi () { // 直接用不需要 this console.log(name.value) } const add () { // 直接用不需要 this count.value } return { name, count, sayHi, add } } }为什么不需要this因为所有变量都在setup()函数的同一个作用域内就像普通 JavaScript 一样直接使用。四、生活比喻选项式 API 餐厅点餐菜单分类 - 前菜区 - 主菜区 - 甜品区 你需要的东西分散在不同区域 需要说我要主菜区的牛排组合式 API 自助餐所有东西都在一个台子上 你可以自由组合 - 牛排配薯条相关的一组 - 沙拉配汤相关的一组 需要什么直接拿五、完整对比示例示例一个用户信息表单选项式 APIexport default { data() { return { form: { username: , phone: , email: }, loading: false, rules: { username: [{ required: true, message: 请输入用户名 }] } } }, computed: { isValid() { return this.form.username this.form.phone } }, methods: { async submit() { this.loading true // 提交逻辑... this.loading false }, reset() { this.form.username this.form.phone this.form.email } } }组合式 APIscript setup import { ref, computed } from vue // 表单数据 const form ref({ username: , phone: , email: }) // 表单验证规则 const rules { username: [{ required: true, message: 请输入用户名 }] } // 加载状态 const loading ref(false) // 计算属性 const isValid computed(() { return form.value.username form.value.phone }) // 提交方法 const submit async () { loading.value true // 提交逻辑... loading.value false } // 重置方法 const reset () { form.value.username form.value.phone form.value.email } /script六、优缺点对比对比项选项式 API组合式 API上手难度⭐ 简单⭐⭐⭐ 需要学习新概念代码组织按类型分组按功能分组this 使用到处需要 this不需要 this逻辑复用Mixins容易冲突Composables清晰TypeScript支持一般支持很好代码量较多boilerplate 多较少适合场景简单组件、小项目复杂逻辑、大项目七、什么时候用哪个用选项式 API✅ 你刚学 Vue想要简单易懂✅ 组件逻辑简单代码量少✅ 团队成员更熟悉 Vue 2用组合式 API✅ 项目复杂逻辑多✅ 需要复用逻辑多个组件用同一套逻辑✅ 想要更好的 TypeScript 支持✅ 新项目没有历史包袱八、实际项目例子看看你项目中的代码stores/user.js组合式 APIimport { defineStore } from pinia; import { ref } from vue; export const useUserStore defineStore(user, () { // 状态 const user ref({}) const token ref() // 方法 function login(username, password) { // ... } function logout() { // ... } // 返回 return { user, token, login, logout } })为什么用组合式user、token、login、logout都是用户相关的功能放在一起逻辑清晰不需要this.user、this.token直接用九、总结核心区别一句话写法特点选项式 API代码按类型分类data、methods 分开用this连接组合式 API代码按功能分类相关的一起不用this我的建议新手先学选项式 API理解 Vue 的基本概念进阶转向组合式 API享受更好的代码组织新项目直接用组合式 API script setup十、学习资源Vue 3 官方文档 - 组合式 APIVue 3 风格指南有问题欢迎留言讨论

相关新闻

不踩雷! 降AIGC软件 千笔·降AI率助手 VS 笔捷Ai,MBA专属利器

不踩雷! 降AIGC软件 千笔·降AI率助手 VS 笔捷Ai,MBA专属利器

在AI技术迅猛发展的今天,越来越多的学生、研究人员和职场人士开始借助AI工具辅助完成论文、报告等学术材料。然而,随着查重系统对AI生成内容的识别能力不断提升,AI率超标问题逐渐成为学术写作中的“隐形炸弹”。一旦AI痕迹过重,不…

2026/7/5 11:58:04 阅读更多 →
多项目并行时,资源冲突怎么协调?

多项目并行时,资源冲突怎么协调?

在企业数字化转型、业务多元化扩张的当下,多项目并行已成为常态——无论是互联网企业的多产品迭代、制造业的多生产线升级,还是工程项目的多标段推进,均需面对人力、物力、财力、时间等核心资源的有限性与项目需求无限性之间的矛盾。资源冲突…

2026/7/5 12:57:54 阅读更多 →
闭眼入AI论文网站,继续教育写论文首选!千笔AI VS 文途AI

闭眼入AI论文网站,继续教育写论文首选!千笔AI VS 文途AI

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

2026/7/5 1:54:15 阅读更多 →

最新新闻

PCB设计中地线与电源线加宽的技术要点与实战分析

PCB设计中地线与电源线加宽的技术要点与实战分析

1. PCB布线中地线与电源线加宽的核心逻辑 在PCB设计领域,地线(GND)和电源线(VCC)的走线宽度处理是影响电路性能的关键因素之一。不同于信号线可以相对灵活地调整宽度,这两类走线需要特殊对待的根本原因在于…

2026/7/5 12:58:00 阅读更多 →
基于YOLOv10的红外目标检测实战指南

基于YOLOv10的红外目标检测实战指南

1. 项目背景与核心价值去年夏天,我在参与一个山区救援项目时,亲眼目睹了传统无人机监控系统的局限性。在浓烟和夜间环境下,普通摄像头完全失效,而热成像设备虽然能捕捉到热源,却无法准确识别是人、动物还是车辆。正是这…

2026/7/5 12:51:58 阅读更多 →
AIAgent之工具调用:Function Call 与 Tool Use

AIAgent之工具调用:Function Call 与 Tool Use

工具调用:Function Call 与 Tool Use工具调用是 Agent 的「手」,让大模型能操作外部世界。这篇讲 Function Calling 的原理、工具怎么定义、模型怎么选工具、参数怎么传、常见的工具类型,以及开发中的最佳实践。大家好,我是黒漂技…

2026/7/5 12:49:55 阅读更多 →
ICM-42688-P与STM32F746ZG在工业自动化中的应用

ICM-42688-P与STM32F746ZG在工业自动化中的应用

1. ICM-42688-P与STM32F746ZG的黄金组合解析 在工业自动化和机器人控制领域,传感器与微控制器的协同设计直接决定了系统的性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS运动传感器,与STMicroelectronics的STM32F746ZG Cortex-M7微控制器形成的硬…

2026/7/5 12:47:54 阅读更多 →
混合整数二次规划在模型预测控制中的应用与求解器对比

混合整数二次规划在模型预测控制中的应用与求解器对比

1. 混合整数二次规划在模型预测控制中的核心作用 混合整数二次规划(MIQP)作为模型预测控制(MPC)中处理离散决策变量的关键技术,其核心价值在于平衡计算复杂度和控制性能。在车辆动力系统控制这类典型应用中,变速箱档位选择、发动机启停等离散决策变量与连…

2026/7/5 12:47:54 阅读更多 →
YOLO实战避坑指南:从环境配置到部署落地的完整工程化流程

YOLO实战避坑指南:从环境配置到部署落地的完整工程化流程

如果你在 2024 年或 2025 年才开始接触 YOLO,可能会觉得它已经是一个“古老”且“成熟”的技术栈,网上教程遍地都是,随便找个代码跑起来似乎并不难。但当你真正想把它用起来,无论是做一个毕业设计、一个内部工具,还是想…

2026/7/5 12:45:54 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻