VUE3-模板语法《二》

news2025/1/23 6:22:17

首先看到这张图,左边的结构就不分析了,上一章有说明顺序。 

中间红色的部分,分为3块,第一块是模板,里面写html;第二块是脚本语言,里面写js或者ts语言,lang="ts"就是ts语法,setup就是vue3中独有的一份,需要注意写法,否则会报错;第三块是html的样式,scoped只在当前区域有效果。这3块可以任意排列,根据你的习惯而定,既然是模板语法,那么重点就是template里面,在template里面写代码,和html写的代码效果是一样的,只是一种语法糖。

一,变量问题

定义变量

var,作用于全局的变量,定义的时候可以不赋值

let,作用于模块内部的变量,定义的时候可以不赋值

const,作用与模块内部的常量,定义的时候必须赋值

<template>
	{{a}}
	{{b}}
	{{c}}
</template>

<script lang="ts" setup>
	let a = '测试let'
	const b = '测试const'
	var c = '测试var'

	let a1
	const b1 = '' //必须赋值
	var c1
</script>

<style scoped>

</style>

 字符串占位符

<template>
	<!-- 	{{a}}
	{{b}}
	{{c}} -->
	{{b}}
</template>

<script lang="ts" setup>
	// let a = '测试let'
	// const b = '测试const'
	// var c = '测试var'

	// let a1
	// const b1 = '' //必须赋值
	// var c1

	let a = '测试let'
	let b = `测试占位符${a}`
</script>

<style scoped>

</style>

二,插值方法

上面的{{}}就是插值法

三,指令

指令前面都是带v-

v-html,插入一段html代码

<template>
	<span v-html="rawHtml"></span>
</template>

<script lang="ts" setup>
	let rawHtml = '<span style="color: red">这里会显示红色!</span>'
</script>

<style scoped>

</style>

v-show,根据表达式的值的真假,来显示或者隐藏html元素

 

<template>
	<!-- <span v-html="rawHtml"></span> -->
	<h1 v-show="yes">123</h1>
	<h1 v-show="yes1">456</h1>
</template>

<script lang="ts" setup>
	// let rawHtml = '<span style="color: red">这里会显示红色!</span>'
	let yes = true
	let yes1 = false
</script>

<style scoped>

</style>

v-if /v-else-if/v-else,这3个都是用于条件判断

<template>
	<!-- <span v-html="rawHtml"></span> -->
	<h1 v-show="yes">123</h1>
	<h1 v-show="yes1">456</h1>
	<h1 v-if="yes">789</h1>
	<h1 v-if="yes1">456</h1>
	
	<h1 v-if="score>=80">优秀</h1>
	<h1 v-else-if="score>=70">良好</h1>
	<h1 v-else>及格</h1>
	
	<h1 v-if="score1>=80">优秀</h1>
	<h1 v-else-if="score1>=70">良好</h1>
	<h1 v-else>及格</h1>
</template>

<script lang="ts" setup>
	// let rawHtml = '<span style="color: red">这里会显示红色!</span>'
	let yes = true
	let yes1 = false
	
	let score=80
	let score1=60
</script>

<style scoped>

</style>

其中v-if和v-show的功能是一样的,都是控制html是否显示元素。

但是,v-if有更高的切换开销,而v-show有更高的初始渲染开销,因此,如果需要非常频繁的切换元素的显示和隐藏,使用v-show。如果在运行时条件很少改变,则使用v-if。

v-for,通过循环的方式来渲染一个列表,循环的对象可以是数组,也可以是对象。

<template>
	<li v-for="(b,index) in books">{{index}}-{{b.title}}</li>
	<h1 v-for="b of books">{{b.title}}</h1>
	<h2 v-for="(b,index) of books">{{index}}-{{b.title}}</h2>
	<h3 v-for="(b,index) of books" :key="index">{{index}}-{{b.title}}</h3>
</template>

<script lang="ts" setup>
	let books = [{
			title: 'vue2'
		},
		{
			title: 'vue3'
		},
		{
			title: 'vue4'
		}
	]
</script>

<style scoped>

</style>

可见,H3中需要:key="index",才不会警告提示,其他3个前面都有警告提示

v-bind,用于响应更新html元素的属性,将一个或多个属性动态的绑定到表达式

<template>
	<button v-bind:disabled="isButtonDisabled">按钮</button>
	<button :disabled="isButtonDisabled1">按钮</button>
</template>

<script lang="ts" setup>
	let isButtonDisabled = true
	let isButtonDisabled1 = false
</script>

<style scoped>

</style>

v-model,用来在表单<input>,<textarea>元素上创建双向数据绑定,它会根据控件类型自动选取正确的方法来更新元素。也就是界面的数据变化了,内部定义的变量也跟着变化。

<template>
	<input type="text" v-model="a" />
</template>

<script lang="ts" setup>
	let a = 123
</script>

<style scoped>

</style>

v-on,用于监听DOM事件,就是使用事件的时候,需要用它。 

<template>
	<div>
		<button v-on:click="a">按钮</button>
		<button @click="b">按钮1</button>
	</div>
</template>

<script lang="ts" setup>
	let a = (() => {
		alert(123);
	});
	let b = (() => {
		alert(456);
	})
</script>

<style scoped>

</style>

v-text,用于更新元素的文本内容

<template>
	<span v-text="a"></span>
	<span>{{a}}</span>
</template>

<script lang="ts" setup>
	let a = 123
</script>

<style scoped>

</style>

v-once,从字面上理解就是只渲染一次,之后将不会渲染了,比如,初始化数组4个值,之后就不能向里面增加值了,意义并不大,很少使用。

v-pre,不需要编译这个元素,原本是什么,就显示什么。

<template>
	<div>
		<h1 v-pre>{{a}}</h1>
	</div>

</template>

<script lang="ts" setup>
	let a = 123
</script>

<style scoped>

</style>

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

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

相关文章

GreatSQL MGR 使用 IPv6 连接

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a;王权富贵文章来源&#xff1a;社区原创 1.概述 本文基于 GreatSQL 8.0.25-16 &#xff0c;以下测试均使用此版…

嵌入式:Load/Store之单寄存器的存取指令

文章目录Load/Store指令分类单寄存器的存取指令1、单字和无符号字节的数据传送指令指令说明指令汇编格式2、半字和有符号字节的数据传送指令指令汇编格式ARM处理器是Load/Store型的&#xff0c;即它对数据的操作是通过将数据从存储器加载到片内寄存器中进行处理&#xff0c;处理…

SuperMap iPortal 对接postgis业务数据库(二):大屏使用接口数据更新图表和地图

本文是SuperMap iPortal 对接postgis业务数据库的第二个步骤&#xff1a;大屏使用接口数据更新图表和地图。 这个步骤可以有两种方式去实现数据的展示和更新如下&#xff1a; 一、使用数据上图构建地图并在大屏中使用 1. 数据上图构建地图 打开iPortal 应用中心的数据上图&a…

教你如何轻松搞定云上打印管理

摘要&#xff1a;加快自主创新&#xff0c;满足数字化用户多场景文印需求。本文分享自华为云社区《有了司印云打印&#xff0c;云上打印管理轻松搞定&#xff01;》&#xff0c;作者&#xff1a;云商店 。 作为与职场和个人办公息息相关的工作场景&#xff0c;打印长期以来都是…

uniapp-uView在离线状态下无法显示icon图标的问题

1、修改uview-ui下的u-icon.vue配置文件&#xff0c;一般目录在 uni_modules\uview-ui\components\u-icon\u-icon.vue 2、源文件引入的是阿里巴巴的icon https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf font-face {font-family: uicon-iconfont;src: url(https://at.…

restful风格快速入门

restful风格入门 概述 简介&#xff1a;REST(Representational State Transfer),表现形式状态转换。 传统风格 http://localhost/users/getById?id1 http://localhost/users/saveUser REST风格 http://localhost/users/1 http://localhost/users 对比&#xff1a; 对比可…

spring-boot sentry 不触发事件

按照官网的提示https://docs.sentry.io/platforms/java/guides/spring-boot/performance/ 一步一步的确认&#xff0c;但是最终就是不触发事件 解决过程&#xff1a; 1.开启debug 在properties文件增加一行 sentry.debugtrue2.运行&#xff0c;查看日志输出。 dsn什么的配…

Android代码保护与反调试方案

1、代码保护方案 1.1、Proguard代码混淆 ProGuard是一个开源的Java代码收缩器&#xff0c;优化器&#xff0c;混淆器和预校验器&#xff0c;ProGuard的作用如下&#xff1a; &#xff08;1&#xff09;压缩(Shrink):检查并移除代码中无用的类、字段、方法&#xff1b; &#…

一键回复聊天软件

不论是何种行业&#xff0c;高效工作都是企业一直在追求的&#xff0c;如果在为客户提供服务的过程中&#xff0c;有一个趁手的好工具是可以带来事半功倍的效果的。 前言 随着互联网的发展&#xff0c;越来越多的工作开始转向线上化&#xff0c;通过网络可以满足客户的多种需求…

手写Srping10(实现容器事件监听)

文章目录目标设计项目结构一、实现1、定义事件接口--ApplicationEvent1、定义通用应用上下文事件--ApplicationContextEvent2、定义刷新和关闭事件--ContextClosedEvent、ContextRefreshedEvent2、定义事件监听--ApplicationListener3、定义事件广播器--ApplicationEventMultic…

audio_open函数分析

audio_open() 的作用&#xff0c;就如同它的名字那样&#xff0c;就是打开音频设备。流程图如下&#xff1a; SDL 库播放音频数据有两种方式。 1&#xff0c;调用层定时往 SDL 接口塞数据。 2&#xff0c;设置SDL回调函数&#xff0c;让 SDL 来主动执行回调函数来取数据。 第…

ABAP 字符处理

场景1:是否只包含数字 str1 CO 0123456789 涉及关键字&#xff1a;CO&#xff0c;使用公式 str1 CO str2 。表示 str1 中 的每个字符 在 str2 中都能找到 类比&#xff1a;无 场景2&#xff1a;字符串1 是否 包含 字符串2 DATA str1 TYPE STRING VALUE hello world. DATA …

Pytest测试框架搭建需求及实现方案

目录 框架需求及实现方案 框架需求 实现方案 支持接口自动化、Web UI自动化及App自动化 可以批量运行用例并生成测试报告 测试完成发送邮件 提供灵活的运行方式&#xff0c;如按功能模块运行、按脚本运行、按用例等级运行等等 提供运行日志方便定位问题 支持切换环境 …

李沐精读论文:MAE 《Masked Autoencoders Are Scalable Vision Learners》

论文&#xff1a;Masked Autoencoders Are Scalable Vision Learners 别再无聊地吹捧了&#xff0c;一起来动手实现 MAE(Masked Autoencoders Are Scalable Vision Learners) 玩玩吧&#xff01; - 知乎 参考博文&#xff1a;MAE 论文逐段精读【论文精读】 - 哔哩哔哩 神洛华…

QT 学习笔记(十)

文章目录一、绘图1. 理论知识储备2. 画背景图3. 简单绘图4. 手动刷新窗口二、绘图实现代码1. 主窗口头文件 widget.h2. 主窗口头文件 widget.cpp由于每次代码都是在原有程序上修改&#xff0c;因此除了新建项目&#xff0c;不然一般会在学完后统一展示代码。 提示&#xff1a;具…

【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释)

卷积神经网络 卷积神经网络&#xff08;convolutional neural network, CNN&#xff09;在提出之初被成功应用于手写字符图像识别&#xff0c;2012年的AlexNet网络在图像分类任务中取得成功&#xff0c;此后&#xff0c;卷积神经网络发展迅速&#xff0c;现在已经被广泛应用于…

怎样在Odoo 16中启用完整的财务功能

Odoo是目前市场上最好的ERP软件之一。Odoo提供两种类型的版本&#xff0c;社区版和企业版。Odoo社区版是由开源软件支持的免费基本版。Odoo社区版本中没有一些模块和功能。但企业版付费版&#xff0c;升级版更适合更高的价值。Odoo企业版具有无限的功能支持和完整的功能。性能和…

「集合底层」深入浅出HashMap底层源码

「集合底层」深入浅出HashMap底层源码 一、HashMap介绍 HashMap底层采用了哈希表&#xff0c;而哈希表是由数组和链表实现的。数组和链表各有自己的特点&#xff1a; 数组&#xff1a;占用空间连续。 寻址容易&#xff0c;查询速度快。但是&#xff0c;增加和删除效率非常低…

倒序打印链表

在做这个题的时候我闹了一个大笑话&#xff0c;我用了反转链表做&#xff0c;哈哈哈哈&#xff0c; 这个题目思路很简单&#xff0c;用到了数组的头插法&#xff0c;注意题目要求返回数组 遍历链表&#xff0c;将链表的val放到数组中 下面来看代码 import java.util.ArrayLis…

flash基础知识

flash基础手册一、flash概念&#xff08;一&#xff09;特性&#xff08;二&#xff09;FLASH的块/扇区/页关系&#xff08;三&#xff09;常用FLASH型号大小&#xff08;四&#xff09;常用FLASH擦写规则&#xff08;五&#xff09;存储器类型参考二、与其他类型存储器件对照&…