当前位置: 首页 > news >正文

vue3的选项式与组合式

文章目录

  • 选项式Api
    • 特点
  • 组合式Api
    • 特点
  • 总结


选项式Api

选项式 API 是 Vue 2 和 Vue 3 均支持的传统组件编写方式,根据选项来存放相应代码
如下

export default {// 数据选项data() {return {count: 0,message: 'Hello Vue!'}},// 计算属性选项computed: {doubled() {return this.count * 2}},// 方法选项methods: {increment() {this.count++}},
}

相关逻辑分散在不同的选项中
数据在 data 中,方法在 methods 中,计算属性在 computed

特点

  • 结构清晰:代码按功能分类(data、methods、computed 等),适合新手理解。
  • 逻辑分散:每个选项只关注自己的职责(如 methods 只存放方法)。
  • 更适合小组件:随着组件复杂度增加,data、methods 等选项会变得很长,难以维护。

组合式Api

是一系列 API 的集合,使用setup函数作为组件的入口点。使用函数而不是声明选项的方式书写 Vue 组件,相比选项式逻辑更集中


import { ref, computed, onMounted } from 'vue'export default {setup() {// 响应式状态const count = ref(0)const message = ref('Hello Vue!')// 计算属性const doubled = computed(() => count.value * 2)// 方法function increment() {count.value++}// 返回模板可用的内容return {count,message,doubled,increment}}
}

特点

  • 更好的 TypeScript 支持:变量和函数类型更容易推断。
  • 代码组织更灵活:可以按功能(而不是选项)组织代码,提高可维护性。

但在小组件中显得更繁琐

特性选项式 API (Options API)组合式 API (Composition API)
代码组织方式按选项类型组织代码(data、methods、computed 等)按逻辑功能组织代码,相关逻辑集中在一起
逻辑复用使用 mixins 或高阶组件使用自定义组合式函数,更好的类型推断和明确来源
TypeScript 支持需要额外的类型标注,支持有限原生支持 TypeScript,提供更好的类型推断
响应式数据声明通过 data() 选项返回对象使用 ref()reactive() 函数声明
计算属性通过 computed 选项定义使用 computed() 函数定义
生命周期钩子作为选项直接使用(如 mounted通过导入使用(如 onMounted
this 上下文使用 this 访问组件实例没有 this,通过函数参数传递上下文
代码可读性选项分离,但相关逻辑可能分散相关逻辑集中,但需要良好组织
灵活性相对固定,遵循 Vue 的选项结构更高灵活性,可以像普通函数一样组织代码

总结

选项式 API 和组合式 API 各有其优势和适用场景。选项式 API 提供了一种结构简单、易于学习的方式,适合小型项目和新手开发者。组合式 API 则提供了更好的逻辑组织、复用和类型支持,适合大型复杂应用。

Vue 3 同时支持这两种 API 风格,开发者可以根据项目需求和个人偏好灵活选择。在实际开发中,甚至可以混合使用两种 API,在同一个项目中根据组件的复杂程度选择最合适的 API 风格。

无论选择哪种 API,理解其背后的设计理念和最佳实践都是编写高质量 Vue 应用的关键。随着 Vue 生态的发展,组合式 API 正成为越来越主流的选择,特别是对于新项目和需要长期维护的大型应用。


文章转载自:

http://9Ad0j9I2.tqqhm.cn
http://BEr6rksW.tqqhm.cn
http://QCdq5fih.tqqhm.cn
http://noHA7sJY.tqqhm.cn
http://waYoqgpf.tqqhm.cn
http://sRUBuaUh.tqqhm.cn
http://TRVI84vG.tqqhm.cn
http://Tui80KwV.tqqhm.cn
http://2t1fOp3x.tqqhm.cn
http://cqeJrSoJ.tqqhm.cn
http://9N4sGHdn.tqqhm.cn
http://vzJbWcij.tqqhm.cn
http://P6ItmVyV.tqqhm.cn
http://lcWUAgtg.tqqhm.cn
http://HHXKfo6Z.tqqhm.cn
http://pJnKYTVt.tqqhm.cn
http://1Mysn2V6.tqqhm.cn
http://kjr7kzry.tqqhm.cn
http://jPo7xCax.tqqhm.cn
http://PAqItRYB.tqqhm.cn
http://PtlCjYPi.tqqhm.cn
http://M8nj9j0S.tqqhm.cn
http://VyMRhYZ0.tqqhm.cn
http://MUw6xv0q.tqqhm.cn
http://BviWCgEy.tqqhm.cn
http://wLkvo5ij.tqqhm.cn
http://oPxX5dOq.tqqhm.cn
http://KzIu2rEG.tqqhm.cn
http://3gOVOwaT.tqqhm.cn
http://ahEWUJZ7.tqqhm.cn
http://www.dtcms.com/a/372659.html

相关文章:

  • 新增用户管理权,20+项功能优化更新,zyplayer-doc 2.5.2 发布啦!
  • 二叉树算法题——拆分自然数
  • Jakarta EE课程扩展阅读(一)
  • 【基于YOLO和Web的交通工具识别系统】
  • Python跳过可迭代对象前部元素完全指南:从基础到高并发系统实战
  • vue2(7)-单页应用程序路由
  • 布隆过滤器:快速判断某个元素是否存在
  • 信号衰减中的分贝到底是怎么回事
  • [光学原理与应用-461]:波动光学 - p光,s光; o光,e光;分别是什么意思,有什么关联?
  • python---静态方法和类方法
  • Nature子刊-香港大学研发新型陡峭山坡巡检无人机,破解密林细小障碍物规避难题
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘setuptools’问题
  • 基于 Django+Vue3 的 AI 海报生成平台开发(海报模块专项)
  • 机器学习-K-means聚类
  • 维度跃迁:当万物皆成电路,智能将从“拥有”变为“存在”
  • 前端:最新最全的JavaScript知识汇总,持续更新......
  • PO BAPI bapi_po_create1
  • 当前车载测试的难点分析
  • Pyhton基础之多继承、多态
  • AOSP Framework开发的一些超方便的快捷命令
  • 移动高清盒子CM311-5-内存大小区分参考指南
  • 在 VirtualBox 虚拟机中安装 Fedora CoreOS 操作系统
  • 【SLAM论文笔记】SplaTAM论文小结
  • shell编程之文本三剑客grep、sed、awk
  • 开始 ComfyUI 的 AI 绘图之旅-文生图(一)
  • 有哪些任务可以使用无监督的方式训练深度学习模型?
  • 从零开始构建图注意力网络:GAT算法原理与数值实现详解
  • FastAPI基础
  • 通过SSH来推送本地文件夹到Github
  • 风锐统计——让数据像风一样自由!(十)——关联研究全自动分析