【vue】vue的基础语法--上

目录

一、Vue的模板语法

1. 学会使用VsCode

2. 文本插值

3. 使用JavaScript表达式

4. 无效

5. 原始html

二、 属性绑定

1. 属性绑定

2.简写方案

3.布尔型Attribute

4. 动态邦定多个值

三、条件渲染

1. v-if

2. v-else

3. v-else-if

4.  v-show

5.  v-if VS v-show

四、循环遍历指令

 1. 复杂数据

2. v-for 与对象

3. 通过key管理状态

4. Key的来源


一、Vue的模板语法

        Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。

1. 学会使用VsCode

  •  Ctrl + ~(波浪线键) 打开终端
  • 执行npm run dev ,运行程序
  • 将以下两个模块中的内容删除掉

 

  • 将App.vue文件改成如下

 

2. 文本插值

        最基本的数据绑定形式文本插值,它使用的是“Mustache“语法(即双大括号):

<script>export default{data(){return{msg:"神奇的棒棒糖",hello:"hello world"}}}
</script>
<template><h3>模版语法</h3><p>{{ msg }}</p><p>{{ hello }}</p>
</template>


3. 使用JavaScript表达式

        每个绑定仅支持单一表达式,也就是一段能够被求值的JavaScript 代码。一个简单的判断方法是是否可以合法地写在 return 后面 (一般不建议这样做)        

 

<script>export default{data(){return{number:10,ok:true,message:"hello"}}}
</script>
<template><p> {{ number + 1 }} </p><p> {{ ok?'Yes':'No' }} </p><p> {{ message.split('').reverse().join('') }} </p>
</template>

4. 无效

<script></script>
<template><!-- 这是一个语句,而非表达式 (错误) --><p>  {{ var a = 1}} </p><!-- 条件控制也不支持,请使用三元表达式 --><p> {{if(ok) {return message} }} </p>
</template>

5. 原始html

        双大括号将会将数据插值为纯文本,而不是 HTML。若想插入 HTML,你需要使用 v-html 指令。

<script>export default{data(){return{rawHtml:"<a href='https://www.boyatop.cn/'>青城博雅</a>"}}}
</script>
<template><p> 纯文本: {{ rawHtml }} </p><p> 属性:<span v-html="rawHtml"></span> </p>
</template>

动态式语法

模版语言

 

 

<script>export default{data(){return{msg:"hello world",rawHtml:"<a href='https://www.boyatop.cn/'>青城博雅</a>"}}}
</script><template><h3>模板语法</h3><p>{{ msg }}</p><p>纯文本;{{ rawHtml }}</p><p>属性:<span v-html="rawHtml"></span></p>
</template>

第二种写法

<script setup>import { Hello } from "./components/Hello.vue";
</script><template><Hello/>
</template>
<script>export default{data(){return{msg:"hello world",rawHtml:"<a href='https://www.boyatop.cn/'>青城博雅</a>"}}}
</script><template><h3>模板语法</h3><p>{{ msg }}</p><p>纯文本;{{ rawHtml }}</p><p>属性:<span v-html="rawHtml"></span></p>
</template>


二、 属性绑定

1. 属性绑定

        双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute,应该使用 v-bind 指令。

<template><div v-bind:id="dynamicId" v-bind:class="dynamicClass">测试</div>
</template>
<script>export default{data(){return{dynamicClass:"appClass",dynamicId:"appid"}}}
</script>
<style>.appClass{color: red;font-size: 30px;}
</style>

        v-bind 指令指示 Vue 将元素的 id attribute 与组件的 dynamicid 属性保持一致。如果绑定的值是 null 或者undefined,那么该 attribute 将会从渲染的元素上移除

比如:

浏览器元素上边不显示

2.简写方案

因为 v-bind 非常常用,我们提供了特定的简写语法

冒号就是v-bind简写

3.布尔型Attribute

        布尔型 attribute 依据 true /false 值来决定 attribute 是否应该存在于该元素上,disabied 就是最常见的例子之一。

4. 动态邦定多个值

        如果你有像这样的一个包含多个 attribute 的JavaScript 对象

<template><div v-bind="ObjectofAttrs">青城博雅</div>  
</template>
<script>export default{data(){return{ObjectofAttrs:{class:"appClass",id:"appid"}}}}
</script>
<style>.appClass{color: red;font-size: 30px;}
</style>

三、条件渲染

Vue中,提供了条件渲染,这类似于 Javascript 中的条件语句
  • v-if
  • v-else
  • v-else-if
  • v-show

1. v-if

        v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。

<template><div v-if="flag">你能看到我嘛?</div>
</template>
<script>export default{data(){return{flag:true // flag:false }}}
</script>

2. v-else

        你也可以使用v-else为v-if添加一个“else区块”

<template><div v-if="flag">你能看到我嘛?</div><div v-else>你还能看到我嘛?</div>    
</template>
<script>export default{data(){return{//flag:true flag:false }}}
</script>

3. v-else-if

        顾名思义,v-else-if提供的是相应于v-if的“else if区块”。它可以连续多次重复使用。

<template><div v-if="type === 'A'"> A </div><div v-else-if="type === 'B'"> B </div><div v-else-if="type === 'C'"> C </div><div v-else>Not A/B/C</div>
</template>
<script>export default{data(){return{type:"D"}}}
</script>

4.  v-show

另一个可以用来按条件显示一个元素的指令是 v-show。其用法基本一样。

<template><div v-show="flag">你能看到我吗</div>
</template>
<script>export default{data(){return{flag:false}}}
</script>

5.  v-if VS v-show

        v-if是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。

        v-if也是惰性的:如果在初次渲染时条件值为false,则不会做任何事。条件区块只有当条件首次变为true时才被渲染。

        相比之下,v-show简单许多,元素无论初始条件如何,始终会被渲染,只有CSS display属性会被切换。

总的来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销。

因此,如果需要频繁切换,则使用v-show较好;

           如果在运行时绑定条件很少改变,则v-if会更合适。


四、循环遍历指令

        我们可以使用v-for指令基于一个数组来渲染一个列表。v-for指令的值需要使用 item in items形式的特殊语法,

        其中 items 是源数据的数组,而 item 是迭代项的别名。

<template><h1>列表渲染</h1><p v-for="item in names"> {{ item }} </p>  
</template>
<script>export default{data(){return{names:["计算机网络","计算机组成原理",'数据结构与算法','操作系统']}}}
</script>  

 1. 复杂数据

        大多数情况,我们渲染的数据源来源于网络请求,也就是JSON格式

<template><h1>列表渲染</h1><div v-for="item in result"><p> {{ item.title }} </p><p> {{ item.url }} </p></div>
</template>
<script>export default{data(){return{result:[{id:"1",title:"河北大学成功获批国家社会科学基金重大项目",url:"https://www.hbu.edu.cn/info/1167/20000.htm"},{id:"2",title:"2024年河北省高校图书馆年会在河北大学举办",url:"https://www.hbu.edu.cn/info/1167/20015.htm"},{id:"3",title:"河北大学举办2025年研究生元旦晚会",url:"https://www.hbu.edu.cn/info/1167/20023.htm"}]}}}
</script>

v-for  也 支持使用可选的第二个参数表示当前项的位置索引。

<template><h1>列表渲染</h1><p v-for="(item,index) in names">{{ index }}-{{ item }} </p>
</template>
<script>export default{data(){return{names:["计算机网络","计算机组成原理",'数据结构与算法','操作系统'] }}}
</script>

        你也可以使用 of 作为分隔符来替代 in 这更接近JavaScript的迭代器语法

2. v-for 与对象

你也可以使用v-for来遍历一个对象的所有属性

<template><h1>列表渲染</h1><p v-for="(value,key,index) of userInfo">{{ value }} - {{ key }} -{{ index }}</p></template>
<script>export default{data(){return{userInfo:{name:"张三",age:20}}}}
</script>

3. 通过key管理状态

        Vue默认按照“就地更新”的策略来更新通过v-for渲染的元素列表。当数据项的顺序改变时,Vue不会随之移动DOM元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。

        为了给Vue一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的key:

<template><h1>key属性添加到v-for当中</h1><p v-for="(item,index) in names" :key="index">{{ item }}</p></template>
<script>export default{data(){return{names:["计算机网络","计算机组成原理",'数据结构与算法','操作系统'] }}}
</script>

温馨提示:

key在这里是一个通过v-bind绑定的特殊attribute

推荐在任何可行的时候为 v-for 提供一个key

key绑定的值期望是一个基础类型的值,例如字符串或number类型

4. Key的来源

         请不要使用index作为key的值,我们要确保每一条数据的唯一索引不会发生变化。

<template><h1>列表渲染</h1><div v-for="(item,index) in result" :key="item.id" ><p> {{ item.title }} </p><p> {{ item.url }} </p></div>
</template>
<script>export default{data(){return{result:[{id:"1",title:"河北大学成功获批国家社会科学基金重大项目",url:"https://www.hbu.edu.cn/info/1167/20000.htm"},{id:"2",title:"2024年河北省高校图书馆年会在河北大学举办",url:"https://www.hbu.edu.cn/info/1167/20015.htm"},{id:"3",title:"河北大学举办2025年研究生元旦晚会",url:"https://www.hbu.edu.cn/info/1167/20023.htm"}]}}}
</script>

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

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

相关文章

【ANGULAR网站开发】初始环境搭建(SpringBoot)

1. 初始化SpringBoot 1.1 创建SpringBoot项目 清理spring-boot-starter-test&#xff0c;有需要的可以留着 1.2 application.properties 将application.properties改为yaml&#xff0c;个人习惯问题&#xff0c;顺便设置端口8888&#xff0c;和前端设置的一样 server:por…

OpenCV的对比度受限的自适应直方图均衡化算法

OpenCV的对比度受限的自适应直方图均衡化&#xff08;CLAHE&#xff09;算法是一种图像增强技术&#xff0c;旨在改善图像的局部对比度&#xff0c;同时避免噪声的过度放大。以下是CLAHE算法的原理、步骤以及示例代码。 1 原理 CLAHE是自适应直方图均衡化&#xff08;AHE&…

1.1.2 配置静态IP和远程SSH登录

一、开放22端口 方法一&#xff1a;开放SSH服务&#xff08;推荐&#xff0c;不需要改动&#xff09; 查看配置文件&#xff0c;已经默认开放ssh服务端口了&#xff0c;ssh默认为22端口&#xff0c;所以不需要改动文件 方法二&#xff1a;开放22端口 &#xff08;1&#xff0…

Soildworks的学习【2025/1/12】

右键空白处&#xff0c;点击选项卡&#xff0c;即可看到所有已调用的选项卡&#xff1a; 点击机械小齿轮选项卡&#xff0c;选择文档属性&#xff0c;选择GB国标&#xff1a; 之后点击单位&#xff0c;选择MMGS毫米单位&#xff1a; 窗口右下角有MMGS&#xff0c;这里也可以选择…

web前端第五次作业---制作菜单

制作菜单 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style…

GAN的应用

5、GAN的应用 ​ GANs是一个强大的生成模型&#xff0c;它可以使用随机向量生成逼真的样本。我们既不需要知道明确的真实数据分布&#xff0c;也不需要任何数学假设。这些优点使得GANs被广泛应用于图像处理、计算机视觉、序列数据等领域。上图是基于GANs的实际应用场景对不同G…

分治算法——优选算法

本章我们要学习的是分治算法&#xff0c;顾名思义就是分而治之&#xff0c;把大问题分为多个相同的子问题进行处理&#xff0c;其中我们熟知的快速排序和归并排序用的就是分治算法&#xff0c;所以我们需要重新回顾一下这两个排序。 一、快速排序&#xff08;三路划分&#xf…

解决el-table表格数据量过大导致页面卡顿问题 又名《umy-ui---虚拟表格仅渲染可视区域dom的神》

后台管理系统的某个页面需要展示多个列表 数据量过多 页面渲染dom卡顿 经调研发现两个组件 pl-table和umy-ui &#xff08;也就是u-table&#xff09; 最终决定使用umy-ui 它是专门基于 Vue 2.0 的桌面端组件库 流畅渲染表格万级数据 而且他是对element-ui的表格做了二次优化…

单元测试概述入门

引入 什么是测试&#xff1f;测试的阶段划分&#xff1f; 测试方法有哪些&#xff1f; 1.什么是单元测试&#xff1f; 单元测试&#xff1a;就是针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其正确性进行测试。 2.为什么要引入单元测试&#x…

Xcode 正则表达式实现查找替换

在软件开发过程中&#xff0c;查找和替换文本是一项常见的任务。正则表达式&#xff08;Regular Expressions&#xff09;是一种强大的工具&#xff0c;可以帮助我们在复杂的文本中进行精确的匹配和替换。Xcode 作为一款流行的开发工具&#xff0c;提供了对正则表达式的支持。本…

基于微信小程序的电影交流平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

GAMES101学习笔记(三):Rasterization 光栅化(三角形的离散化、抗锯齿、深度测试)

文章目录 视口变换 Viewport三角形网格 Triangle Mesh采样 Sampling走样/反走样 Aliasing/Antialiasing采样频率、空间域与频率域深入理解采样、走样、反走样反走样总结深度测试 Depth testing 课程资源&#xff1a;GAMES101-现代计算机图形学入门-闫令琪 Lec5 ~ Lec6 学习笔记…

《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》

桥梁作为交通基础设施的重要组成部分&#xff0c;其结构健康状况直接关系到交通运输的安全和畅通。随着桥梁建设规模的不断扩大和服役年限的增长&#xff0c;桥梁结构的安全隐患日益凸显&#xff0c;传统的监测方法已难以满足对桥梁结构健康实时、全面、准确监测的需求。分布式…

BUUCTF:web刷题记录(1)

目录 [极客大挑战 2019]EasySQL1 [极客大挑战 2019]Havefun1 [极客大挑战 2019]EasySQL1 根据题目以及页面内容&#xff0c;这是一个sql注入的题目。 直接就套用万能密码试试。 admin or 1 # 轻松拿到flag 换种方式也可以轻松拿到flag 我们再看一下网页源码 这段 HTML 代码…

腾讯云AI代码助手编程挑战赛-知识百科AI

作品简介 知识百科AI这一编程主要用于对于小朋友的探索力的开发&#xff0c;让小朋友在一开始就对学习具有探索精神。在信息化时代下&#xff0c;会主动去学习自己认知以外的知识&#xff0c;同时丰富了眼界&#xff0c;开拓了新的知识。同时催生了在大数据时代下的信息共享化…

大语言模型预训练、微调、RLHF

转发&#xff0c;如有侵权&#xff0c;请联系删除&#xff1a; 1.【LLM】3&#xff1a;从零开始训练大语言模型&#xff08;预训练、微调、RLHF&#xff09; 2.老婆饼里没有老婆&#xff0c;RLHF里也没有真正的RL 3.【大模型微调】一文掌握7种大模型微调的方法 4.基于 Qwen2.…

【理论】测试框架体系TDD、BDD、ATDD、MBT、DDT介绍

一、测试框架是什么 测试框架是一组用于创建和设计测试用例的指南或规则。框架由旨在帮助 QA 专业人员更有效地测试的实践和工具的组合组成。 这些指南可能包括编码标准、测试数据处理方法、对象存储库、存储测试结果的过程或有关如何访问外部资源的信息。 A testing framewo…

20250112面试鸭特训营第20天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 250112 1. TCP 和 UDP 有什么区别&#xff1f; 特性TCPUDP连接方式面向连接&#xff08;需要建立连接&#xff09;无连接&#xff08;无需建立连接&#xff09;可靠性可靠的&#xff0c;提供确认、重传机制不可靠&#xff0c…

linux--防火墙 iptables 双网卡 NAT 桥接

linux--防火墙 iptables 双网卡 NAT 桥接 1 介绍1.1 概述1.2 iptables 的结构 2 四表五链2.1 iptables 的四表filter 表&#xff1a;过滤规则表&#xff0c;默认表。nat 表&#xff1a;地址转换表。mangle 表&#xff1a;修改数据包内容。raw 表&#xff1a;原始数据包表。 2.2…

oracle闪回表

文章目录 闪回表案例1&#xff1a;&#xff08;未清理回收站时的闪回表--成功&#xff09;案例2&#xff08;清理回收站时的闪回表--失败&#xff09;案例3&#xff1a;彻底删除表&#xff08;不经过回收站--失败&#xff09;案例4&#xff1a;闪回表之后重新命名新表总结1、删…