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

Vue3通透教程【四】Vue3组合API初体验

文章目录

  • 🌟 写在前面
  • 🌟 组合式 API 是什么?
  • 🌟 直观组合式API
  • 🌟 写在最后


🌟 写在前面

专栏介绍:
凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其他框架的巨大优势,有兴趣的伙伴可以看一下 Vue框架背后的故事、尤大大对前端生态是这样看的,随着 Vue 框架不断的被认可,现如今的 Vue 框架已经是前端工程师必备的技能了,记得尤大大开发 Vue 的初衷,为了让自己的开发工作更加便捷,也希望这个框架能让更多人的开发工作变得轻松;现如今 Vue 框架做到了,尤大大做到了,当然在 20 年的 9 月 18 日,Vue 又向前端同僚们报告了一次大的突破 Vue3.0 版本正式发布!如今已经过去了两年多的时间,更多的公司选择了Vue3技术,所以凉哥也在这个时候为大家出这份专栏,本专栏将帮助大家掌握Vue3+TS技术,提升自己竞争力!

温故知新:
上篇文章中我们为大家简单的看了一下Vue3的代码块,里面的写法还是有些不同的,你还记得有哪些变化么,如果你还没有阅读那就赶快去看看吧,而且我们手写了Vue2和Vue3的入口文件main.js,让大家感受到我们Vue初始化到挂载存在的差距,前面的文章中我们也提及到了学习Vue3其实就是学习我们的组合式API,这篇文章我们就是来简单的认识和接触一下我们的组合式API;下面就让我们来一起看一下吧!


🌟 组合式 API 是什么?

选项式 API (Options API) 大家熟悉的Vue2项目中,我们使用的是选项是API就是我们在项目文件中的export default {}对象里面加入我们使用到的 data、methods、watch 等等配置;组合式 API (Composition API) 通过组合式 API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与 <script setup> 搭配使用。这个 setup attribute 是一个标识,告诉 Vue 需要在编译时进行一些处理,让我们可以更简洁地使用组合式 API。比如,<script setup> 中的导入和顶层变量/函数都能够在模板中直接使用。

在这里插入图片描述

两种 API 风格都能够覆盖大部分的应用场景。它们只是同一个底层系统所提供的两套不同的接口。实际上,选项式 API 是在组合式 API 的基础上实现的!关于 Vue 的基础概念和知识在它们之间都是通用的。选项式 API 以“组件实例”的概念为中心,对于有面向对象语言背景的用户来说,这通常与基于类的心智模型更为一致。同时,它将响应性相关的细节抽象出来,并强制按照选项来组织代码,从而对初学者而言更为友好。组合式 API 的核心思想是直接在函数作用域内定义响应式状态变量,并将从多个函数中得到的状态组合起来处理复杂问题。这种形式更加自由,也需要你对 Vue 的响应式系统有更深的理解才能高效使用。相应的,它的灵活性也使得组织和重用逻辑的模式变得更加强大。


🌟 直观组合式API

上面我们说的都是他们的理论点,我们不如通过一个小小的案例来从代码层面直观的感受一下两种API形式的区别吧!我们就用一个简单的例子,就是下面图片中的两个小功能,一个是通过点击按钮切换图片的展示与隐藏,一个是通过点击按钮实现点赞累加总的获赞数量;

在这里插入图片描述

相信大家在看到这个需求思路就非常清晰了哈,其实就是你想的那么简单,我们声明一个变量利用v-if控制图片的展示隐藏,通过上方按钮改变变量的布尔值;第二个我们初始化一个变量为0 每次点击点赞按钮让变量++即可实现;那么下面呢我们分别利用Vue2的选项API和Vue3的组合式API同时来用代码实现上面的功能,我们来感受一下;

Vue3中可以编写选项API吗?当然可以,所以大可不必可以切换到Vue2框架中去尝试,直接在我们Vite构建的Vue3项目中去编写即可!

选项式API

<template><h2>凉哥案例</h2><div><button @click="switchBtn">展示/隐藏</button></div><img v-if="showImg" width="200" height="200"src="https://img2.baidu.com/it/u=2167395474,3773933499&fm=253&fmt=auto&app=138&f=PNG?w=1018&h=500" alt=""><p>请为我点赞 共{{ fabulous }}个赞 <button @click="give">点赞</button></p>
</template>
<script>
export default {data(){return{showImg:true,fabulous:0}},methods:{switchBtn(){this.showImg=!this.showImg},give(){this.fabulous++}}
}
</script>
<style lang='less' scoped>
</style>

组合式API

<template><h2>凉哥案例</h2><div><button @click="switchBtn">展示/隐藏</button></div><img v-if="showImg" width="200" height="200"src="https://img2.baidu.com/it/u=2167395474,3773933499&fm=253&fmt=auto&app=138&f=PNG?w=1018&h=500" alt=""><p>请为我点赞 共{{ fabulous }}个赞 <button @click="give">点赞</button></p>
</template>
<script>
import { ref, reactive } from 'vue'
export default {setup() {//切换图片展示let showImg = ref(true)const switchBtn = () => {showImg.value = !showImg.value}//点赞let fabulous = ref(0)const give = () => {fabulous.value++}return { showImg, switchBtn, fabulous, give }}
}
</script>
<style lang='less' scoped>
</style>

上面的两套代码你都进行了尝试么?相同的功能我们看到两个API实现上逻辑相同但是写法上有点点区别,就是我们能感受到 组合式API 表现出来的是每个逻辑使用到的数据、函数都在一起,当然我们这里只是简单的小例子,如果复杂的项目中我们运用组合式API 每个逻辑都是一块代码,甚至我们可以将一个逻辑的代码块单独摘出来进行封装以便复用,这对我们后期的维护和代码的梳理来说都是有很大的优势。大家应该对组合API的写法非常陌生没有关系,大家就先跟上上面的代码先写出来即可,下篇文章我们会展开来讲解 组合API的各类函数

在这里插入图片描述


🌟 写在最后

相信大家都基本上知道了组合式API和选项API的大致差别了吧,你心里倾向于哪一种呢?比如我们上面案例中的ref其实就是组合式API中的一个函数,还有其他的一些函数我们会在下一篇文章中为大家详细的讲解作用以及用法;让我们 let’s coding

本期推荐

在这里插入图片描述

原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下

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

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

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

相关文章:

Vue3通透教程【四】Vue3组合API初体验

文章目录&#x1f31f; 写在前面&#x1f31f; 组合式 API 是什么&#xff1f;&#x1f31f; 直观组合式API&#x1f31f; 写在最后&#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 Vue3 的相关技…...

coco数据集训练nanodet详细流程

github地址 首先要配置环境 conda create -n nanodet python3.8 -y conda activate nanodet确认一下cuda版本 nvcc -V确认是11.3之后&#xff0c;要安装11.3对应的pytorch版本。 本机装pytorch1.12.1后面运行的时候会报错&#xff08;torch没有经过cuda编译&#xff09;&…...

关于Kubernetes不兼容Docker

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129153459 参考文献&#xff1a;https://www.cnblogs.com/1234roro/p/16892031.html 一、总结 总结起来就是一句话&#xff1a; k8s只是弃用了dockershim&#xff0c;并不是弃用了整个Docker&#xf…...

MySql_基础篇_从下载mysq到数据库操作

本笔记基于b站up主黑马程序员的视频整理 用于记录与回顾 数据库相关概念 数据库 DS 存储数据的仓库 数据库管理系统 DSMS 操纵和管理数据库的大型软件 sql 操作关系型数据库的编程语言是一套标准 mysql 默认端口号是3306 下载数据库 社区版下载 https://dev.mysql.com/…...

当我尝试问了chatGPT几个问题之后,我感到了危机......

问题1 &#xff1a; vue3 框架的bug有哪些&#xff1f; 组件内部的状态更新不及时&#xff1a;由于Vue3使用Proxy来实现响应式&#xff0c;在某些情况下&#xff0c;组件内部的状态更新不及时&#xff0c;导致组件的渲染出现问题。 组件内部的数据更新不及时&#xff1a;由于V…...

如何生成全局唯一ID

1.数据库自增ID 2.UUID 3.Redis生成ID 4.zookeeper生成ID 5.雪花算法...

基于node vue的电商系统 mongodb express框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 基于node vue的电商系统 mongodb express框架前言技术栈基本功能普通用户管理员一、运行截图&#xff1f;二、使用步骤1.前端main.js2.后端admin路由前言 技术栈 本项目采用…...

【03-JVM面试专题-JVM中你知道的类加载器有哪些?作用是什么?分别用来加载什么文件?什么内容的呢?】

JVM中你知道的类加载器有哪些&#xff1f;作用是什么&#xff1f;分别用来加载什么文件&#xff1f;什么内容的呢&#xff1f; JVM的类加载器你都知道吗&#xff1f;它们的作用是什么呢&#xff1f;分别用来加载什么文件呢&#xff1f;你看看自己掌握的怎么样呢&#xff1f; Bo…...

面试纪要FFFFF

面试纪要目录概述需求&#xff1a;设计思路实现思路分析1.主要内容参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive. hap…...

gma 1.1.3 (2023.02.22) 更新日志

&#xff08;实际版本日期&#xff1a;2023.02.14&#xff09; 重要更新&#xff1a; 从本版本开始&#xff0c; gma 开始支持 Python 3.11&#xff01; 新增&#xff1a; 1、map 增加【AddDataSetDiscrete】添加离散型栅格数据集绘制功能。 2、math a、添加 Stretch 数据…...

现有安全技术

现有的安全技术 防火墙技术 数据机密性技术 防火墙技术比较静态地保护网络支付涉及的客户端网络商家网络、金融专用网络等网络级的安全&#xff0c;数据传输过程中的安全性则需要数据机密性技术进一步给以保护 我们将源信息称为明文。为了保护明文&#xff0c;将其通过某种…...

Qt QMAKE_MSC_VER

文章目录摘要修改conf文件参考链接关键字&#xff1a; Qt、 QMAKE_MSC_VER 、 conf、 version、 关键字5摘要 今天在又有了新的小项目需要CV一下&#xff0c;但是第三方提供的是COM组件的库&#xff0c;所以第一步还是老实使用VS版本的Qt 来开发&#xff0c;以防不测&#xf…...

如何通俗地理解原码、反码和补码

进制是什么&#xff1f;进制是人为设计的一套带进制计数方法&#xff0c;比如日常使用的十进制&#xff0c;就是0-9这10个数字&#xff0c;每逢十就会向高位进一。因为人类只有十根手指&#xff0c;所以天生地就会想到使用十进制--数到10发现手指头不够用了&#xff0c;就只能进…...

在vite vue3 前端架构中,切换环境,切换项目的架构设计方案

最近在项目中遇到了这样一个问题&#xff0c;在我们的系统中&#xff0c;有一个项目的概念&#xff0c;用户可以创建多个项目&#xff0c;每个项目中又有多个环境&#xff0c; 当用户点击项目名称后&#xff0c;会进入一个项目的内页&#xff0c;左侧菜单栏会有切换环境的功能。…...

华为OD机试真题Python实现【跳格子】真题+解题思路+代码(20222023)

跳格子 题目 地上共有N个格子,你需要跳完地上所有的格子, 但是格子间是有强依赖关系的,跳完前一个格子后, 后续的格子才会被开启,格子间的依赖关系由多组steps数组给出, steps[0]表示前一个格子,steps[1]表示steps[0]可以开启的格子: 比如[0,1]表示从跳完第0个格子以后…...

Python 入门之文件和异常处理

文件和异常 至此&#xff0c;已经掌握了编写组织有序而易于使用的程序所需的基本技能&#xff0c;该考虑让程序目标更明确、用途更大了。 本章&#xff0c;将学习文件处理&#xff0c;它能让程序快速分析大量的数据&#xff0c;也将学习错误处理&#xff0c;避免程序在面对意…...

操作系统作业

1、下列关于线程的描述中&#xff0c;错误的是A&#xff0e;内核级线程的调度由操作系统完成B&#xff0e;操作系统为每个用户级线程建立一个线程控制块C&#xff0e;用户级线程间的切换比内核级线程间的切换效率高D&#xff0e;用户级线程可以在不支持内核级线程的操作系统上实…...

【计算机网络 -- 期末复习】

例题讲解 IP地址&#xff08;必考知识点&#xff09; 子网掩码 子网划分 第一栗&#xff1a; 子网划分题目的答案一般不唯一&#xff0c;我们主要采用下方的写法&#xff1a; 第二栗&#xff1a; 路由跳转 数据传输 CSMA/CD数据传输 2、比特率与波特率转换 四相位表示&am…...

三、(补充)接口是对类的一部分行为的抽象

接口是对类的一部分行为的抽象 类类型 实现接口 为什么不是描述类呢&#xff1f;而是类一部分行为的抽象&#xff1f; 类中分为&#xff1a;静态部分&#xff08;构造器&#xff09;、实例部分&#xff08;类成员&#xff09;。 类成员&#xff1a;实例的属性、原型上的方…...

CIMCAI intellgent ship product applied by world top3 shipcompany

CIMCAI智慧船公司集装箱管理产品ceaspectusS™全球规模应用全球前三大船公司认可验箱标准应用落地全球港航人工智能AI独角兽 CIMCAI中集飞瞳CIMCAI Intellgent shipping product ceaspectusS ™which applied by the worlds top three shipping companiesGlobal port and shipp…...

jless屏幕滚动命令终极指南:掌握ctrl-b、ctrl-f、PageUp、PageDown高效浏览JSON数据

jless屏幕滚动命令终极指南&#xff1a;掌握ctrl-b、ctrl-f、PageUp、PageDown高效浏览JSON数据 【免费下载链接】jless jless is a command-line JSON viewer designed for reading, exploring, and searching through JSON data. 项目地址: https://gitcode.com/gh_mirrors…...

Python脚本打包成.exe方法

利用 pyinstaller打包 先安装这个库 pip install pyinstaller安装完成后&#xff0c;就可台利用pyinstaller进行打包了 在脚本文件的目录下切到cmd中&#xff0c;执行以下 pyinstaller -F tcping.py-F参数&#xff1a; 表示覆盖打包&#xff0c;不管我们打包几次&#xff0c;都…...

如何利用Lv值实现三级降帧

目录 一、核心逻辑&#xff08; 二、5 种帧率 → 精简为 3 级 三、LV 阈值划分 四、代码实现 一、核心逻辑 亮度越暗 → LV 越小 → 帧率越低亮度越亮 → LV 越大 → 帧率越高 三级降帧就是&#xff1a; 高亮度&#xff1a;高帧率&#xff08;30fps&#xff09;中亮度&am…...

波动方程的平面波解

...

6款AI论文降重软件,智能改写与优化,显著提升原创度。

开头总结工具对比&#xff08;技能4&#xff09; &#xfffd;&#xfffd; 为帮助学生们快速选出最适合的AI论文工具&#xff0c;我从处理速度、降重效果和核心优势三个维度&#xff0c;对比了6款热门网站&#xff0c;数据基于实际使用案例&#xff1a; 工具名称 处理速度 降…...

三种常见AC/DC转换方案详解与选型指南

1. 交流转直流方案概述在电子设备设计中&#xff0c;将交流电转换为直流电是最基础也是最重要的环节之一。作为一名硬件工程师&#xff0c;我在过去十年里接触过各种AC/DC转换方案&#xff0c;从简单的阻容降压到复杂的开关电源设计。这些方案各有特点&#xff0c;适用于不同的…...

【Docker】镜像安全扫描工具clair与clairctl

【Docker】镜像安全扫描工具clair与clairctl 镜像扫描结构图 方式2的具体操作步骤 clair是什么&#xff1f; clair是一个开源项目&#xff0c;用于静态分析appc和docker容器中的漏洞。 漏洞元数据从一组已知的源连续导入&#xff0c;并与容器映像的索引内容相关联&#xff0c…...

Pandas数据预览优化:告别Pycharm输出窗口的省略号困扰

1. 数据预览的痛点&#xff1a;被省略号吃掉的关键信息 刚接触Pandas那会儿&#xff0c;我总被Pycharm的输出窗口气得跳脚。明明调用了describe()想看数据分布&#xff0c;结果给我整出一堆省略号&#xff0c;关键统计量全藏在"..."里。最崩溃的是处理宽表时&#xf…...

AI同事抑郁症诊断报告:大模型存在主义危机爆发

当测试对象成为“患者” 在软件测试的日常工作中&#xff0c;我们习惯于面对无生命的代码、逻辑严密的流程和可预期的行为边界。我们设计用例&#xff0c;模拟输入&#xff0c;验证输出&#xff0c;在“预期”与“实际”的比对中寻找偏差。然而&#xff0c;当测试对象从传统的…...

三步打造完美Jellyfin番剧库:Bangumi插件实战指南

三步打造完美Jellyfin番剧库&#xff1a;Bangumi插件实战指南 【免费下载链接】jellyfin-plugin-bangumi bgm.tv plugin for jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-bangumi 你是否曾为Jellyfin中的动漫收藏而烦恼&#xff1f;看着那些…...