【Vue】Vue3中的OptionsAPI与CompositionAPI

文章目录

  • OptionsAPI
  • CompositionAPI
  • 对比
  • 总结


OptionsAPI

中文名:选项式API通过定义methods,computed,watch,data等属性方法,处理页面逻辑。以下是OptionsAPI代码结构
在这里插入图片描述
实例代码:

<script lang="ts">// js或者tsimport { defineComponent } from 'vue'export default defineComponent({// 启用了类型推导data(){return{name:"我是选项式API",otherName:"我是选项式API 另一个值",}},mounted() {this.handleTest()this.handleTest2()},methods:{handleTest(){console.log(this.name)},handleTest2(){console.log(this.otherName)}}})
</script>

优缺点:

  1. 条例清晰,相同的放在相同的地方。如果项目小,功能简单问题不大。但是项目一旦大,功能复杂,就会出现高耦合,低内聚的场面了。
  2. 当前页需要调用this去获取方法或属性。如果逻辑一复杂,就会出现指向不明等问题。

CompositionAPI

中文名:组合式API把一个功能所以顶的所有API汇集到一起,更加符合高内聚,低耦合的编程思想。即使项目再大,功能再复杂,都能快速定位这个功能的所有API。以下是CompositionAPI代码结构
在这里插入图片描述
实例代码:

<script setup lang="ts">import {ref} from "vue"let name = ref("我是选项式API")const handleTest = () => {console.log(name.value)}let otherName = ref("我是选项式API 另一个值")const handleTest2 = () => {console.log(otherName.value)}
</script>

优点:

  1. 有更好的逻辑复用组合函数来实现更加简洁高效的逻辑复用
  2. 更灵活的代码组织
  3. 更好的类型推导:支持使用Typescript,组合式 API 重写的代码可以享受到完整的类型推导,不需要书写太多类型标注
  4. 更小的生产包体积:搭配

对比

从以下图片可以看出,CompositionAPI(组合式API) 代码一目了然,功能一块的划分。如果要修改或者修复bug,能更快的查找和修复。所以推荐使用组合式API 写法。
在这里插入图片描述

总结

  1. 在逻辑组织和逻辑复用方面,Composition API是优于Options API
  2. Composition API几乎是函数,会有更好的类型推断
  3. Composition API对 tree-shaking 友好,代码也更容易压缩
  4. Composition API中没有对this的使用,减少了this指向不明的情况

踩坑不易,还希望各位大佬支持一下 \textcolor{gray}{踩坑不易,还希望各位大佬支持一下} 踩坑不易,还希望各位大佬支持一下

📃 个人主页: \textcolor{green}{个人主页:} 个人主页: 沉默小管

📃 个人网站: \textcolor{green}{个人网站:} 个人网站: 沉默小管

📃 个人导航网站: \textcolor{green}{个人导航网站:} 个人导航网站: 沉默小管导航网

📃 我的开源项目: \textcolor{green}{我的开源项目:} 我的开源项目: vueCms.cn

🔥 技术交流 Q Q 群: 837051545 \textcolor{green}{技术交流QQ群:837051545} 技术交流QQ群:837051545

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

如果有不懂可以留言,我看到了应该会回复
如有错误,请多多指教

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaScript手写专题——防抖/节流/闭包/Promise/深浅拷贝

目录 目录 一、 防抖/节流/闭包/定时器 编写一个组件&#xff0c;在input中输入文本&#xff0c;在给定的数据中查找相关的项目&#xff0c;并渲染搜索结果列表 1.新增InputSearch.vue组件 key的作用 2.新增 InputView.vue 3.添加路由 4.效果演示 follow up加上防抖怎么处理 1.…

「51媒体网」邀请媒体采访报道对企业宣传有何意义?

传媒如春雨&#xff0c;润物细无声的&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 邀请媒体采访报道对企业宣传具有多重意义&#xff1a; 提升品牌知名度和曝光度&#xff1a;媒体是信息传播的重要渠道&#xff0c;通过媒体的报道&#xff0c;企业及其活动、产品能够迅…

软考信息处理技术员2024年5月报名流程及注意事项

2024年5月软考信息处理技术员报名入口&#xff1a; 中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn/&#xff09; 2024年软考报名时间暂未公布&#xff0c;考试时间上半年为5月25日到28日&#xff0c;下半年考试时间为11月9日到12日。不想错过考试最新消息的…

k8s删除namespace失败一直处于Terminating状态

获取Terminating状态的namespace ~ kubectl get namespace NAME STATUS AGE bluehelix Active 146d broker Active 146d cattle-fleet-cluster…

Sketch是免费软件吗?这款软件支持导入!

Sketch 是一款针对网页、图标、插图等设计的矢量绘图软件。Sketch 的操作界面非常简单易懂&#xff0c;帮助全世界的设计师创作出许多不可思议的作品。但是同时&#xff0c;Sketch 也有一些痛点&#xff1a;使用 Sketch 需要安装 InVision、Abstract 、Zeplin 等插件&#xff0…

配置 施耐德 modbusTCP 分布式IO子站 PRA0100

模块官方介绍&#xff1a;https://www.schneider-electric.cn/zh/product/BMXPRA0100 1. 总体步骤 2. 软件组态&#xff1a;在 Unity Pro 软件中创建编辑 PRA 模块工程 2.1 新建项目 模块箱硬件型号如下 点击 Unity Pro 软件左上方【新建】按钮&#xff0c;选择正确的 DIO …

记一次C语言内存越界(内存越界 段错误 Segmentation fault )

1 背景 最近在用C重构原来用C写的SDK&#xff0c;发现一个内存越界问题&#xff0c;记录下来&#xff0c;以供后续参考。 2 问题 代码如下: #include <stdio.h> #include <stdlib.h>int array1[4] {1, 2, 3, 4}; int array2[4] {5, 6, 7, 8};int main(int arg…

Filter Listener Interceptor

文章目录 第一章 Filter1. 目标2. 内容讲解2.1 Filter的概念2.2 Filter的作用2.3 Filter的入门案例2.3.1 案例目标2.3.2 代码实现2.3.2.1 创建ServletDemo012.3.2.2 创建EncodingFilter 2.4 Filter的生命周期2.4.1 回顾Servlet生命周期2.4.1.1 Servlet的创建时机2.4.1.2 Servle…

git提交代码时报错,提不了

问题 今天在换了新电脑&#xff0c;提交代码时报错 ✖ eslint --fix found some errors. Please fix them and try committing again. ✖ 21 problems (20 errors, 1 warning) husky > pre-commit hook failed (add --no-verify to bypass) 解决 通过 --no-verify 解决&…

程序员如何搞副业

#程序员如何搞副业&#xff1f;# 在快速发展的IT行业中&#xff0c;程序员作为技术骨干&#xff0c;通常拥有扎实的编程能力和丰富的项目经验。然而&#xff0c;随着职业生涯的深入&#xff0c;许多程序员开始思考如何进一步提升自我价值&#xff0c;实现更多的经济收益。副业成…

RobotFramework测试框架(2)-测试用例

创建测试数据 测试数据语法 这里的测试数据就是指的测试用例。 测试文件组织 测试用例的组织层次结构如下&#xff1a; 在测试用例文件&#xff08; test case file &#xff09;中建立测试用例 一个测试文件自动的建成一个包含了这些测试用例的测试集&#xff08; test s…

python中for与while的区别是什么

Python中for循环和while循环本质上是没有区别的&#xff0c;但是在实际应用上&#xff0c;针对性不太一样。 for主要应用在遍历中&#xff0c;比如&#xff1a; example1&#xff1a; for i in range(10):print(i) 打印结果为&#xff1a; 0 1 2 3 4 5 6 7 8 9 注&#xff1a;…

RuoYi-Vue若依框架-在框架内用颜色选择器,页面显示色块

在用若依框架进行二次开发的时候写到自己的一个模块&#xff0c;其中涉及到颜色&#xff0c;我就想着是手动输入还是采用颜色选择器呢&#xff0c;考虑到后续涉及到另一个字段编码于时就采用了颜色选择器&#xff0c;选择完的颜色显示的是十六进制的颜色选择器&#xff0c;这时…

Imagination 推出全新Catapult CPU,加速RISC-V 设备采用

Imagination APXM-6200 CPU&#xff1a;适用于智能、消费和工业应用的性能密集型RISC-V应用处理器 中国上海 - 2024 年 4 月 8 日 - Imagination Technologies于今日推出Catapult CPU IP系列的最新产品 Imagination APXM-6200 CPU。这款RISC-V应用处理器具有极高的性能密度、无…

Excel 文件底部sheet 如何恢复

偶然打开一个excel文件&#xff0c;惊奇地发现&#xff1a;原来excel文件底部的若干个sheet居然全都看不到了。好神奇啊。 用其它的电脑打开同样的excel文件&#xff0c;发现&#xff1a;其实能看到的。说明这个excel文件并没有被损坏。只要将修改相关设置。就可以再次看…

JS与Python函数在语法的区别

区别 标题语法&#xff1a;Python使用缩进来表示代码块&#xff0c;而JavaScript使用大括号{}。 Python函数定义&#xff1a; def my_function():# 函数体JavaScript函数定义&#xff1a; function myFunction() {// 函数体 }标题参数传递&#xff1a;Python支持位置参数、…

10:00面试,10:08就出来了,问的问题过于变态了。。。

10:00面试&#xff0c;10:08就出来了&#xff0c;问的问题过于变态了。。。 消息队列是一种应用耦合、异步处理和流量削峰的技术。它通过将消息存储在队列中&#xff0c;使得生产者和消费者可以在不同的时间、不同的地点进行通信&#xff0c;从而实现了解耦、异步处理和流量削…

flask接口返回文本、json、图片格式

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️感谢大家点赞&#x1f44d;&…

MCU 与 SoC 的主要区别

一个有意思的话题&#xff1a;虚拟 MCU、虚拟 SoC 的区别。其实这个本质上是 MCU 和 SoC 的区别。我们过去的内容里有不少关于 MCU 的介绍&#xff0c;请参考我们之前的内容。我们接下来简单的聊一聊 MCU 和 SoC 的区别。 片上系统&#xff08;SoC&#xff09;是一个相对较新的…

【随笔】Git 高级篇 -- 提交的技巧(上) rebase commit --amend(十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…