vue模板语法(上集)

2023-09-19 11:22:06

为什么要用Vue模板语法

Vue模板语法是Vue.js框架的一部分,使用它有以下几个优点:

  1. 简化了HTML代码编写:Vue模板语法支持简化HTML标签和属性的写法,使得代码更加简洁易读,提高开发效率。
  2. 数据绑定:Vue模板语法支持数据双向绑定,可以将数据自动更新到对应的DOM元素,从而避免了手动操作DOM的麻烦。
  3. 条件渲染:Vue模板语法支持条件渲染,可以根据特定条件来渲染特定的内容,从而提升用户体验。
  4. 循环渲染:Vue模板语法支持循环渲染,可以根据特定的数据进行循环渲染相同结构的元素,从而避免了重复编写代码的麻烦。 综上所述,Vue模板语法简化了HTML代码编写,提供了数据绑定、条件渲染、循环渲染等功能,使得Vue.js开发更加高效、可维护和易于扩展。

插值

插值不仅可以显示数据和JavaScript表达式,还可以显示Vue.js指令、事件和组件等内容,可以帮助开发者更加方便地操作数据和DOM元素,提高开发效率和代码可读性。

需要注意的是,Vue模板语法插值只是一种数据绑定的方式,插值中的内容必须是一些安全的文本,不能够包含HTML标签或其他恶意代码,否则会出现安全问题。对于需要渲染HTML标签的内容,应该使用Vue.js提供的v-html指令

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
			<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>插值</title>
		
		<style type="text/css">
			.f30{
				font-size:30px;
			}
		</style>
	</head>
	<body>
		<!-- 定义vue所管理的边界,有且只有一个根节点 -->
		<div id="app">
			<p>文本</p>
			{{msg}}
			<p>html解析</p>
			{{msg2}}<br>
			<b :class="msg3"  v-html="msg2"></b>
			<p>表达式</p>
			{{mun+1}}
			{{warn.substr(0,2)}}
			<input v-model="ok" />
			{{ok?'成功了':'失败了'}}
		</div>	
				
		<script type="text/javascript">
		new Vue({
			el:"#app",
			data(){
				return{
					msg:'hello  小B 你相信光吗?',
					msg2:'<span style="color:yellow">hello 小B</span>',
					msg3:'f30',
					num:6,
					warn:'听到我的招换了吗?',
					ok:true
					};
			}
		});
		
		</script>
	
	</body>
</html>

指令

 上述只是常用的一些指令,Vue.js还提供了很多强大的指令和功能,可以根据实际需要选择合适的指令使用。同时需要注意的是,在使用Vue指令时需要遵守Vue的规范,正确使用Vue指令才能发挥出它的优点,提高开发效率和代码质量。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
			<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>指令</title>
		
	</head>
	<body>
		<div id="app">
			<p>v-if/v-else-if/v-else</p>
		<input v-model="score"/><br />
		<b v-if="score < 60">不及格</b>
		<b v-else-if="score>60 && score< 70">及格</b>
		<b v-else-if="score>70 && score< 80">一般</b>
		<b v-else-if="score>80 && score< 90">良好</b>
		<b v-else="">优秀</b>
		<!-- 60以下 不及格
		60-70  及格
		70-80  一般
		80-90  良好
		90以上  优秀 -->
		<p>v-show</p>
		v-if 与v-show的区别?<br>
		<b v-if="isShow">展示</b>
		<b v-show="isShow">展示</b>
		<p>v-for</p>
		<i v-for="a in arr">{{a}}&nbsp;&nbsp;</i>
		<i v-for="i,u in users">{{u.name}}&nbsp;&nbsp;{{i}}</i>
		<select>
			<option v-for ="h in hobby" :value="h.id">{{h.name}}</option>
		</select>
		
		<div id=""  v-for="h in hobby">
			<input type="checkbox" name="hobby" :value="h.id"/>{{h.name}}
		</div>
		<p>动态参数</p>
		<input v-model="evname" />
		<button v-on:[evname]="test">点我</button>
		</div>
		<script type="text/javascript">
		new Vue({
			el:"#app",
			data(){
				return{
					score:69,
					isShow:false,
					arr: [1,2,3,4],
					users:[{
						name:'lb',id:1
					},{
						name:'lx',id:2
					},{
						name:'lz',id:3
					},{
						name:'lw',id:4
					}],
					hobby:[{
						name:'洗脚',id:1
						},{
							name:'洗脚',id:2
						},{
							name:'洗脚',id:3
						},{
							name:'SPA',id:4
					}],
					evname:'click'
					};
			},
			methods:{
				test(){
					//单机事件,
					alert('点我试试!!! ');
				}
			}
		});
		
		</script>
	</body>
</html>

过滤器

Vue.js的过滤器是一个强大的功能,可以让我们轻松地处理模板中的数据,提高代码的可读性和可维护性。同时需要注意的是,过滤器只适合于简单的数据格式化和处理,如果需要进行复杂的数据操作,应该使用计算属性或方法。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<script src="date.js" type="text/javascript" charset="UTF-8"></script>
		<title>过滤器</title>
	</head>
	<body>
		<div id="app">
			<p>局部过滤器基本应用</p>
			{{msg}}<br />
			{{msg |filterA}}
			<p>局部过滤器串行应用</p>
			{{msg}}<br />
			{{msg |filterA |filterB}}
			<p>局部过滤器传参</p>
			{{msg | filterC(3,10)}}<br />
			<p>全局过滤器</p>
			{{time}}<br />
			{{time | fmtDateFilter}}

		</div>
		<script type="text/javascript">
			Vue.filter('fmtDateFilter', function(value) {
				//value表示要过滤的内容
				return fmtDate(value);
			});
			new Vue({
				el: "#app",
				filters: {
					'filterA': function(v) {
						return v.substring(0, 6)
					},
					'filterB': function(v) {
						return v.substring(2, 5)
					},
					'filterC': function(v, begin, end) {
						return v.substring(begin, end);
					}
				},
				data() {
					return {
						msg: '想死了',
						time: new Date()
					}
				},
				methods: {
					test() {
						alert('点我试试!!!');
					}
				}
			});
		</script>
	</body>
</html>

排座

<!DOCTYPE html>
<html>
	<head>
		<title>排座</title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<h2>排座</h2>
			<input type="text" v-model="seatInput1">
			<input type="text" v-model="seatInput2">
			<input type="text" v-model="seatInput3">
			<hr>
			<h3>用户:</h3>
			<ul>
				<!-- 遍历过滤器传来的值 -->
				<li v-for="user in filteredUsers" :key="user.id">{{ user.name }}</li>
			</ul>
			<hr>
		</div>
 
		<script>
			new Vue({
				el: '#app',
				data: {
					seatInput1: '',
					seatInput2: '',
					seatInput3: '',
					users: [{
							id: 1,
							name: '刘鑫'
						},
						{
							id: 2,
							name: '刘文'
						},
						{
							id: 3,
							name: '刘兵'
						},
						{
							id: 4,
							name: '刘志'
						},
						{
							id: 5,
							name: '大B'
						}
					]
				},
				/* 定义一个filteredUsers计算属性 */
				computed: {
				/* 使用filter方法来过滤users数组中的元素。filter方法接受一个回调函数作为参数,
				该回调函数会对数组中的每个元素进行判断,并返回一个新的数组,其中包含满足条件的元素。 */
				filteredUsers() {
					return this.users.filter(
					/* 使用=>箭头函数的语法来定义一个匿名函数。这个匿名函数接受一个参数user,
					表示users数组中的每个元素。 */
				user => {
				/* 使用逻辑运算符&&来判断user.name是否不等于seatInput1、seatInput2和seatInput3的值。
				如果满足这个条件,说明user.name不等于任何一个输入框的值,那么这个元素就会被保留在过滤后
				的数组中。 */
					return user.name !== this.seatInput1 &&
						user.name !== this.seatInput2 &&
						user.name !== this.seatInput3
							});
					}
				}
			});
		</script>
	</body>
</html>

计算属性监听属性 

计算属性

Vue.js的计算属性是一个非常有用的功能,它可以提高代码的可读性和可维护性,同时也可以实现复杂的数据计算和处理。如果需要进行非响应式的数据操作,建议使用methods方法。

监听属性 

在上面的例子中,我们定义了一个数据属性message,并且使用watch选项来监听该数据属性的变化。当该数据属性发生变化时,会触发watch中对应的函数,实现对数据属性变化的响应。

需要注意的是,使用watch选项来监听数据属性的变化时,需要在Vue实例中显式地定义响应式的数据属性,并且需要将计算属性转为响应式的数据属性,以便在watch选项中进行监听。

总的来说,Vue.js的监听属性功能可以帮助我们实现对数据属性的变化响应,可以在实际开发过程中提高代码的可读性和可维护性。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
			<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>计算属性监听属性</title>
		<style type="text/css">
			.f30{
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<p>计算机属性</p>
			单价:<input v-model="price" />
			数量:<input v-model="num" />
			小计: {{count}}
			<p>监听属性</p>
			千米: <input v-model="km" /><br />
			米:<input v-model="m" />
		</div>
		<script>
			new Vue({
				el:'#app',
				data(){
					return{
						price:79,
						num:1,
						m:1000,
						km:1
					};
					},
					computed:{
						count:function(){
							return this.price * this.num;
						
					}
				},
				watch:{
					km:function(v){
					//v指的是被监听的属性,是km
						this.m =parseInt(v) * 1000;
					},
					m:function(v){
					//v指的是被监听的属性,是m
						this.km = parseInt(v)/1000;
					}
				}
			});
			
			
		</script>
	</body>
</html>

 今天就分享到这了谢谢各位的支持,谢谢大家!

更多推荐

【Linux 之二】Ubuntu下开发环境的搭建(NFS \ SSH \ FTP \ Smba \ ...)

目前正在进行Linux相关项目的开发,而我的Linux开发是在Ubuntu(版本20.04)下进行的,为此需要搭建很多Linux相关的开发环境,方便工作的进行。这里主要是对各种开发环境的搭建做一个总结记录,方便后面查阅,也方便在Linux开发之路上遇到困难的各位同仁。好了,废话不多说,直接罗列各种开发环境的安装步骤等。

Java 多线程

目录线程相关概念线程基本使用1.继承Thread类,重写run方法示例代码程序示意图2.实现Runnable接口,重写run方法示例代码*应用案例代码理解3.继承Threadvs实现Runnable的区别4.多线程售票问题引出同步互斥问题5.线程终止代码示意图线程常用方法第一组示例代码第二组示例代码用户线程和守护线程示

Google Guava精讲(一)-Guava是什么?能做什么?

https://mvnrepository.com/artifact/com.google.guava/guava作为Java栈的测试工程师,在写代码时候会频繁遇到字符串处理、缓存、反射等问题,我们最常规的做法就是,为了使原生的JDK方法好用,通常是做了一层又一层封装,然后提供整个测试团队使用,而渐渐的就形成了自己的J

什么是葡萄酒结构,结构型葡萄酒好吗?

葡萄酒爱好者使用许多复杂的术语来描述葡萄酒的味道,有些是不言自明的,有些则有点模糊。如果你不是葡萄酒专家,你可能很难理解这个葡萄酒术语的全部含义。其中一个术语是葡萄酒结构,那么葡萄酒结构是什么意思呢?而结构酒是好东西吗?葡萄酒的结构是指葡萄酒的主要特征之间的相互作用,包括酒体、酒精度、酸度、单宁和甜度,葡萄酒的结构决定

73、SpringBoot 直接整合 JDBC

★SpringBoot可直接整合JDBC来操作数据库——很少这么干,这么干就意味着使用最原始的方式来操作数据库。对于对于极小的项目,直接整合JDBC无需添加JPA、Hibernate等ORM框架。★JdbcTemplate为项目添加spring-boot-starter-jdbc.jar依赖(注意没有data)。——这

CTF--攻防世界-杂项入门第一课

这是第一次接触杂项这个方向,所以就是根据writeup解的题,没有什么自己的思路,只是写一篇文章来记录一下解题过程。下载题目后拿到一张图片,确实挺迷惑的,不知从何下手,根据大家的思路都是看看有没有隐写,这里就需要用到一个很好用的工具--StegSolve这里就穿插一下这个工具的下载以及安装http://www.caes

MySQL进阶—从零到入土

1.存储引擎1).建表时指定存储引擎CREATETABLE表名(字段1字段1类型[COMMENT字段1注释],......字段n字段n类型[COMMENT字段n注释])ENGINE=INNODB[COMMENT表注释];2).查询当前数据库支持的存储引擎showengines;A.查询建表语句---默认存储引擎:Inn

设计模式:状态模式(C++实现)

状态模式(StatePattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为。状态模式将对象的行为封装在不同的状态类中,使得状态的切换对于对象来说是透明的。下面是一个简单的C++状态模式的示例:#include<iostream>//抽象状态类classState{public:virtualvoidh

Flink--4、DateStream API(执行环境、源算子、基本转换算子)

星光下的赶路人star的个人主页注意力的集中,意象的孤立绝缘,便是美感的态度的最大特点文章目录1、DataStreamAPI1.1执行环境(ExecutionEnvironment)1.1.1创建执行环境1.2执行模式(ExecutionMode)1.3触发程序执行2、源算子(Source)2.1准备工作2.2从集合中

二叉树(相关术语、创建、遍历、最大深度问题)梳理总结

🍓简介:java系列技术分享(👉持续更新中…🔥)🍓初衷:一起学习、一起进步、坚持不懈🍓如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏🍓希望这篇文章对你有所帮助,欢迎点赞👍收藏⭐留言📝🍓更多文章请点击文章目录一、二叉树1.1树的基本定义1.2树的相关术语1.3二叉树的基本定义1.4二叉查找树

OZON测评自养号技巧,提升店铺权重和销量,避免恶意跟卖

在中国的跨境商家眼中,OZON可能是一个陌生的名字,但在俄罗斯人眼中,它是一个家喻户晓的电商平台。自2016年开始在俄罗斯运营以来,OZON已经成为俄罗斯市场上备受欢迎的电商平台,为俄罗斯人提供了丰富多样的产品选择和便利的购物体验。迄今为止,OZON在俄罗斯市场的占有率已经超过了最早深耕俄系市场的速卖通。有市场的地方就

热文推荐