springboot+vue全栈开发【3.前端篇之Vue基础语法2】

目录

  • 前言
  • Vue基础语法
    • 1.事件绑定指令
    • 2.条件渲染指令
      • v-show和v-if指令
      • v-else和v-else-if指令
    • 3.列表渲染指令
      • 扩展:v-for中的key

前言

hi,这个系列是我自学开发的笔记,适合具有一定编程基础(html、css那些基础知识要会!)的同学,有问题及时指正!

Vue基础语法

1.事件绑定指令

在 Vue.js 中,事件绑定是一种常用的技术,用于响应用户的交互动作,如点击、输入等。Vue 提供了 v-on 或 @ 语法糖来进行事件绑定。

例子:

<body><div id="app"><h3>count的值为:{{count}}</h3><button v-on:click="addCount">+1</button><button @click="count+=1">+1</button></div><script>const vm = {data : function(){return {count:0,}},methods:{addCount(){this.count+=1}}    }const app = Vue.createApp(vm)app.mount('#app')</script>
</body>

运行结果:
在这里插入图片描述

  • <button v-on:click="addCount">+1</button>这里使用了 v-on:click 指令来监听按钮的点击事件。当按钮被点击时,addCount 方法会被调用。addCount 方法会将 count 数据属性的值增加 1。
  • <button @click="count+=1">+1</button>这是 v-on 的语法糖,它提供了一个更简洁的 @click 表达式来进行事件绑定。与第一个按钮的效果相同,当这个按钮被点击时,count 数据属性的值会增加 1。

总结一下,这两个按钮都绑定了 click 事件,当它们被点击时,都会触发增加 count 数据属性的值的操作。第一个按钮使用了方法绑定,而第二个按钮直接在 @click 表达式中进行了操作,两者的效果都是相同的,都会使 count 值增加 1。
需要注意的是,直接在模板中修改数据属性(如第二个按钮中的 count+=1)并不是 Vue 推荐的做法。更好的方式是使用方法来修改数据,因为这样可以使代码更清晰。

PS.语法糖是什么意思?

“语法糖”是计算机科学中的一个术语,它指的是一种编程语言特性,它并不提供新的功能,而是提供了更简洁、更易于理解和使用的语法形式来执行常见的操作。这种语法形式并不影响底层的实现,它只是为了方便开发者。
在 Vue.js 中,@ 符号是 v-on: 的语法糖。它们的作用是完全相同的,都用于事件绑定。@click=“handler” 可以看作是 v-on:click=“handler” 的简化形式。

2.条件渲染指令

v-show和v-if指令

在 Vue.js 中,条件渲染指令用于根据表达式的真假来动态地显示或隐藏元素。Vue 提供了两个主要的条件渲染指令:v-if 和 v-show。

例子:

<body><div id="app"><button @click="flag = !flag">Toggle flag</button><p v-if="flag">请求成功====被v-if控制</p><p v-show="flag">请求成功====被v-show控制</p></div><script>const vm = {data : function(){return {flag:false,}}    }const app = Vue.createApp(vm)app.mount('#app')</script>
</body>

运行结果:
在这里插入图片描述
在这里插入图片描述

  • <p v-if="flag">请求成功====被v-if控制</p> v-if 指令会根据 flag 数据属性的值来决定是否渲染该元素。当 flag 的值为 true 时,该 <p> 元素会被渲染到 DOM 中;当 flag 的值为 false 时,该 <p> 元素会从 DOM 中移除。
  • <p v-show="flag">请求成功====被v-show控制</p> v-show 指令也会根据 flag 数据属性的值来控制元素的显示和隐藏,但它是通过 CSS 的 display 属性来控制的。当 flag 的值为 true 时,该 <p> 元素会显示;当 flag 的值为 false 时,该 <p> 元素会隐藏,但它仍然存在于 DOM 中。
  • <button @click="flag = !flag">中的click绑定事件语句可以改变flag的赋值,所以点击按钮,会显示出下面的两个p元素,再次点击又会消失。

总结一下:

  • v-if 是“真正的”条件渲染,因为它确实会根据条件添加或删除元素。
  • v-show 只是简单地切换元素的 display CSS 属性,因此它对于频繁切换的元素比较适用,因为它不会像 v-if 那样在每次切换时都销毁和重建元素,这样可以有更好的性能表现。

在选择使用哪个指令时,通常的建议是:
如果元素需要频繁切换,使用 v-show。
如果元素在运行时不经常改变,或者在起始时就需要进行条件判断,使用 v-if。

v-else和v-else-if指令

在 Vue.js 中,除了 v-if 和 v-show 外,还提供了 v-else 和 v-else-if 指令来进一步控制条件渲染。这两个指令用于与 v-if 或 v-else-if 配合使用,根据前面指令的条件来决定是否渲染当前元素。

例子:

<body><div id="app"><p v-if="num>0.5">随机数大于0.5</p><p v-else>随机数小于等于0.5</p><hr/><p v-if="type === 'A'">distinction</p><p v-else-if="type === 'B'">B</p><p v-else>C</p></div><script>const vm = {data : function(){return {num:Math.random(),type:'A'}}    }const app = Vue.createApp(vm)app.mount('#app')</script>
</body>

运行结果:
在这里插入图片描述

  • <p v-if="num>0.5">随机数大于0.5</p><p v-else>随机数小于等于0.5</p> 在这里,v-if 指令检查 num 是否大于 0.5。如果条件为 true,则渲染“随机数大于0.5”的 <p> 元素。如果条件为 false,则 v-else 指令会渲染“随机数小于等于0.5”的 <p> 元素
  • <p v-if="type === 'A'">distinction</p><p v-else-if="type === 'B'">B</p><p v-else>C</p>在这个例子中,根据 type 的值,我们有三个条件:如果 type 的值是 ‘A’,则渲染“distinction”的 <p> 元素。如果 type 的值是 ‘B’,则渲染“B”的 <p> 元素。如果以上条件都不满足,v-else 指令会渲染“C”的 <p> 元素

总结一下:

  • v-else 用于在 v-if 指令之后渲染一个元素。它必须紧跟在一个 v-if 或 v-else-if 指令之后,并且在同一个元素上。
  • v-else-if 用于在 v-if 或 v-else-if 之后添加一个额外的条件块。它必须紧跟在 v-if 或另一个 v-else-if 指令之后,并且在同一个元素上。

3.列表渲染指令

在 Vue.js 中,v-for 指令用于循环渲染一个数组或对象的每一项。这个指令提供了一种简单的方式来遍历数据集合并渲染每一项为 DOM 元素。

例子:

<body><div id="app"><ul><li v-for="(user,i) in userList">索引是:{{i}}, 姓名是{{user.name}}</li></ul></div><script>const vm = {data : function(){return {userList:[{id:1,name:'za'},{id:2,name:'san'},{id:3,name:'wang'},]}}    }const app = Vue.createApp(vm)app.mount('#app')</script>
</body>

运行结果:
在这里插入图片描述

  • v-for 指令遍历 userList 数组,并为数组中的每个元素生成一个 <li> 元素。在循环的过程中,我们可以使用括号内的表达式为每个元素指定一个别名和一个索引。
  • (user, i) in userList:这个表达式将 userList 数组中的每个对象解构为 user(当前对象)和 i(当前索引)。
  • 因此这段代码渲染结果会是
<ul><li>索引是:0, 姓名是za</li><li>索引是:1, 姓名是san</li><li>索引是:2, 姓名是wang</li>
</ul>

v-for 指令不仅仅限于数组,它也可以遍历对象的属性。此外,还可以使用 v-for 指令的其他特性,如提供一个可选的第二个参数作为键(key)值,或使用 of 关键字代替 in。但在大多数情况下,上述的基础用法就足够满足需求了。

扩展:v-for中的key

在 Vue.js 中,key 是 v-for 指令的一个重要属性,用于指定每个列表项的唯一标识符。这个标识符是为了帮助 Vue 识别列表中的每一项,从而有效地管理列表项的状态和重新渲染。
当 Vue 重新渲染列表时,它会根据 key 的值来确定哪些元素是新增的、哪些元素是被删除的、以及哪些元素是被重新排序的。如果没有提供 key,Vue 可能会使用元素的索引作为默认的 key,但在某些情况下,这样可能会导致不必要的性能问题和渲染错误。

例子:

<body><div id="app"><div><input type="text" v-model="name"><input type="text" :value="name"><button @click="addUser">添加</button></div><ul><li v-for="(user,i) in userList" :key="user.id"><input type="checkbox" />姓名:{{user.name}}</li></ul></div><script>const vm = {data : function(){return {userList:[{id:1,name:'za'},{id:2,name:'san'},{id:3,name:'wang'},],name:'',nextID:4,}},methods:{addUser(){this.userList.unshift({ id: this.nextID, name: this.name});this.name='';this.nextID++;}}    }const app = Vue.createApp(vm)app.mount('#app')</script>
</body>

运行结果:
在这里插入图片描述

  • <li v-for="(user, i) in userList" :key="user.id"> 每个 user 对象都有一个唯一的 id 属性,我们使用这个 id 属性作为 key。这样,当列表项被添加、删除或重新排序时,Vue 可以根据 id 属性准确地识别每个列表项。
  • <input type="text" v-model="name"> v-model 是 Vue.js 提供的一个双向数据绑定指令。它在表单输入元素上创建了一个双向绑定。当输入框的值发生变化时,name 数据属性也会自动更新。同样地,当 name 数据属性的值改变时,输入框的值也会自动更新。
  • <input type="text" :value="name"> :value 是 Vue.js 的一个绑定属性语法,它用于单向数据绑定。它将 name 数据属性的值绑定到输入框的 value 属性。这意味着当 name 数据属性的值改变时,输入框的 value 属性会更新,但不会反过来影响 name 数据属性。这是一个单向的数据流,只能从数据属性流向视图

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

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

相关文章

【随笔】Git 高级篇 -- 模拟团队合作 git fetch git pull(二十九)

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

最新IntelliJ IDEA 2024.1 安装和快速配置教程

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版 文章目录 IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版前言 第一步&#xff1a; IntelliJ IDEA 2024.1安装教程第 0 步&…

国产高性能DSP音频处理芯片 AI算法智能消原音 PTN1118方案

PTN1118植入帕特纳微AI&#xff08;SVS&#xff09;&#xff0c;实现将任意音源中人声部分消除&#xff0c;并在极大程度上保留伴奏&#xff0c;配合PTN 卡拉OK系列芯片&#xff0c;使传统音频设备更富娱乐性。 支持模拟与数字输入输出&#xff0c;数字接口支持从模式 人声消除…

单细胞RNA测序(scRNA-seq)cellranger count的细胞定量和aggr整合

单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 单细胞RNA测序(scRNA-seq)SRA数据下载及fastq-dumq数据拆分 单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 细胞定量…

NL2SQL进阶系列(4):ConvAI、DIN-SQL、C3-浙大、DAIL-SQL-阿里等16个业界开源应用实践详解[Text2SQL]

NL2SQL进阶系列(4)&#xff1a;ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL] NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a…

揭秘AI精准输出:如何构建完美的AIGC提示词?

揭秘AI精准输出&#xff1a;如何构建完美的AIGC提示词&#xff1f;&#x1f916; 文章目录 揭秘AI精准输出&#xff1a;如何构建完美的AIGC提示词&#xff1f;&#x1f916;摘要引言正文&#x1f4d8; 提示词的基本概念1. 什么是提示词&#xff1f;2. 提示词的作用 &#x1f4d…

SSH KEY 添加

mac&#xff1a; Add SSH KEY公钥 1、 先cd进.ssh文件夹&#xff0c;查看电脑中是否存在之前添加的公钥文件(id_rsa.pub、id_rsa)&#xff0c;要是存在&#xff0c;就先删除: jingchengxindeMacBook-Pro:~ jingchengxin$ cd .ssh jingchengxindeMacBook-Pro:.ssh jingchen…

PTA图论的搜索题

目录 7-1 列出连通集 题目 输入格式: 输出格式: 输入样例: 输出样例: AC代码 7-2 六度空间 题目 输入格式: 输出格式: 输入样例: 输出样例: 思路 AC代码 7-3 地下迷宫探索 题目 输入格式: 输出格式: 输入样例1: 输出样例1: 输入样例2: 输出样例2: 思路 …

基于Springboot+Vue的Java项目-免税商品优选购物商城系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

DC-3渗透测试复现

DC-3渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-sql注入-反弹shell- pkexec提权&#xff08;CVE-2021-4034&#xff09; 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_3(192.168.85.133) 复现…

特斯拉宣布 10%大裁员;刘强东数字人开启直播首秀丨 RTE 开发者日报 Vol.185

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

目标检测——YOLO系列学习(一)YOLOv1

YOLO可以说是单阶段的目标检测方法的集大成之作&#xff0c;必学的经典论文&#xff0c;从准备面试的角度来学习一下yolo系列。 YOLOv1 1.RCNN系列回顾 RCNN系列&#xff0c;无论哪种算法&#xff0c;核心思路都是Region Proposal&#xff08;定位&#xff09; classifier&am…

链表拓展之双向链表

前言 在前面已经总结了单链表&#xff0c;有了单链表的基础会很好理解双链表的实现&#xff0c;忘记了可以跳转——>http://t.csdnimg.cn/GFPk9 接下来就由我带着各位看官来认识今天的主角吧~ 什么是双向链表 在单链表的基础上&#xff0c;它有两个方向的链接&#xff0c;一…

第二期书生浦语大模型训练营第五次笔记

模型部署 模型部署对于任何大模型来说是非常关键的一步。一旦模型经过训练并达到预期的性能指标,就需要将其部署到实际的生产环境中,为最终用户提供服务。但是在部署过程中,大型模型会面临一些独特的挑战。 面临的挑战 大模型在部署方面有一个难题&#xff0c;就是大模型的“大…

fatal: Out of memory, malloc failed

git 切分支&#xff0c;或者clone仓库的时候碰到这个错误&#xff0c;看网上很多配置config文件&#xff0c;都尝试了没效果。 自测了一个可行的方式&#xff1a; 由于本人用的sourcetree 所以解决方式如下&#xff1a; git升级为最新版&#xff0c;选择系统GIt版本&#xf…

加强金融行业关键信息基础设施安全保护,有效防范网络安全风险

当前&#xff0c;随着数字化发展的不断深入&#xff0c;关键信息基础设施作为国家的重要战略资源&#xff0c;面临着国内外严峻的网络安全风险。为了确保国家安全&#xff0c;在国家发展各领域和全过程中&#xff0c;需要将安全发展贯穿始终&#xff0c;筑牢国家安全屏障。金融…

打一把王者的时间,学会web页面测试方法与测试用例编写

一、输入框 1、字符型输入框&#xff1a; &#xff08;1&#xff09;字符型输入框&#xff1a;英文全角、英文半角、数字、空或者空格、特殊字符“~&#xff01;#&#xffe5;%……&*&#xff1f;[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时&#xff0c;…

【Altium Designer 20 笔记】PCB铺铜过程

PCB铺铜步骤 切换到Keep-Out Layer&#xff08;禁止布线层&#xff09; 使用shifts键切换单层显示 画禁止布线范围&#xff08;防止铺铜过大&#xff09; 切换到需要铺铜的层 选择铺铜网络&#xff0c;通常是地&#xff08;GND&#xff09;或某个电源网络 隐藏覆铜&#xff1a;…

SpringBoot项目接入Nacos注册中心

前置 已经安装好Nacos服务&#xff0c;并且该项目所在服务器可以访问到 可以参考下&#xff1a; windows环境安装Nacos单机版-CSDN博客 Centos7安装Nacos单机版-CSDN博客 1. POM文件引入依赖 注意&#xff0c;父工程已经引入spring cloud依赖管理的情况下不用添加版本号 …

CAN网络管理(网络节点)

什么是CAN的网络节点 网络节点是指连接到CAN总线上的设备或模块,每个网络节点都具有唯一的标识符,称为节点ID,用于在CAN总线上进行通信和识别。 如何判断CAN的网络节点是多少 可以根据DBC来定义查看, 以ADCU为例,域控作为主节点,一般外部的像雷达,camera的数据都是向…