vue.js前端开发技术读书笔记二:vue数据绑定


请添加图片描述
❤️❤️❤️vue模板语法?响应式声明渲染机制?vue属性绑定?vue双向数据绑定?vue计算属性?计算属性与methods区别?vue生命周期?

1.vue模板语法

vue核心是允许开发者使用简洁的模板语法声明式地将数据渲染进DOM的系统,即将模板中文本数据放入DOM中,可使用mustache语法{{}}完成


<body>
		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>	
		<div id="app">
			
			{{ text }}
			
		</div>
	
	<script>
		
		 var vm = new Vue({
			el: '#app',
			data:{text:'文本数据被渲染到HTML中了哦!'}
		
		
			
		})
		</script>

效果图如下:
在这里插入图片描述
{{}}将数据解析为纯文本,如果要解析为HTML,需要使用v-html


		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>	
		<div id="app">
			
		<div v-html="message"></div>
			
		</div>
	
	<script>
		
		new Vue({
			el: '#app',
			data:{message:'用户名:<input type="text" value="中文名"/>'+
			'密码:<input type="password"/>'}
			//不支持换行,换行需要用单引括号括起来后用+连接
		
		
			
		})
		</script>

效果图如下:
在这里插入图片描述
vue支持JavaScript所有表达式,对于JavaScript表达式在模板语法中的使用,只适用于简单的表达式,复杂的可以使用后面要学的计算属性computerd,切记:每个绑定都只能包含单个表达式

{{var a = 1}}<!--为语句非表达式无效-->
{{if(ok){retrun message}}}<!--无效可以改为三元表达式-->

2.响应式声明渲染机制

vue工作原理是当把一个普通的JavaScript对象传给vue实例的data选项时,vue就会遍历此对象的所有属性,在属性被访问和修改时通知变化,并把数据渲染进DOM

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>	
		<div id="myapp">
			
		<p> {{message}}</p>
			
		</div>
	
	<script>
		var mydata = {
			message:'Hello vue'
		}
		
		var app = new Vue({
			el: '#myapp',
			data:mydata
		
		
			
		})
		</script>
	</body>
</html>

打开浏览器控制台,修改app.message=hello vue.js,页面中p标签中数据会自动更新。
v-on:click可以绑定事件,缩写形式@click

3.vue属性绑定

页面需要超链接,那么需要用vue属性绑定
vue属性绑定

<div id='myAPP'>
<a v-blind:href="url"></a><!--缩写为<a:href="url"></a>-->

</div>

<script>
var app=new Vue({
el:"myAPP",
data:{bookName:'vue.js编程入门',
url:'https://cn.vuejs.org/'
}
})
</script>

若需要将bookname绑定到文本框

<p v-html="urlTag"></p>
var app=new Vue({
el:'myAPP',
data:{urlTag:'<a href=https://cn.vuejs.org/>vue.js</a>'}})

要绑定一段html,则用v-html指令
若要显示超链接,则用v-blind指令

4.vue双向数据绑定

对DOM元素来说,有数据双向绑定,vue是一个MVVM框架,及DOM数据双向绑定,当数据发生变化,视图也会发生变化,当视图发生变化,数据也会同步变化

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<title></title>
		
	</head>
	<body>
		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
		<div id="app">
			<span>欢迎词:</span>
			代表地球人:{{ message }}
			<div>
				{{ message }}
			</div>
			<button id="btn">点击改变</button>
			<hr>
			请输入:<input type="text" id="keywords" v-model="keywords">
			<button id="btnSearch">点击搜索</button>
			<form>
				<input type="text" v-model="in1">
				<input type="text" v-model="in2">
				<input type="text" v-model="in3">
				<input type="text" v-model="in4">
				<input type="text" v-model="in5"><!--5个文本框也已经绑定了数据模型中的值-->
			</form>
			
		</div>
	
	<script>
		var dat = {
			message: 'Hello vue!',
			keywords: '关键词',
			in1: '1',
			in2: '2',
			in3: '3',
			in4: '4',
			in5: '5'
			
		}
		
		var app = new Vue({
			el: '#app',
			data: dat
		
		})
		
		</script>
		
		<script>
			var btnE1 = document.getElementById("btn");
			btnE1.onclick = function(){
				app.message = "你好,潜力无限";
				
			}
			</script>
			<script>
				var btnSearchE1 = document.getElementById("btnSearch");
				btnSearchE1.onclick=funtion(){
					alert(app.message);
				}
				</script>
	</body>
</html>

效果图:

在这里插入图片描述

通过结果可以发现数据实现了双向绑定,把data下的数据放到页面上,并且可以把data里的数据和页面上的元素产生一一对应的关系。绑定方式有两种:一是{{}},可以由模板引擎根据数据实时进行修正,vue负责驱动模板把数据渲染到DOM上,一种是属性名也是一种指令,如v-model就是双向绑定。

5.vue计算属性

一般模板只用于简单的运算,计算属性computed可将复杂逻辑放入计算中进行处理,同时computed有缓存功能,可防止复杂计算逻辑多次调用引起的性能问题

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<title>演示计算属性</title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
		<div id="app">
			<h2>图书</h2>
			
			<div>
				您购买了{{book.name}}共{{book.count}}本===¥{{book.price}}/本
			</div>总价:{{totalPrice}}</div>
		</div>
	
	<script>
		
		var vm = new Vue({
			el: '#app',
			data: {
				book:{id:1,price:10,name:'vue入门',count:1},
				discount:0.8,
				deliver:12
			},
			computed:{
				totalPrice(){
				return (this.book.price*this.book.count)*this.discount+this.deliver;
			}
			}
		
		})
		</script>
		
	</body>
</html>

效果图
在这里插入图片描述
注意:常见代码书写错误1.message名称2.逗号问题3.标签成对出现

6.计算属性与methods区别

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<title>演示methods</title>
		<script src="js/vue.js"></script>
	</head>
	<body>
		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
		<div id="app">
			<h2>图书</h2>
			
			<div>
				您购买了{{book.name}}共{{book.count}}本===¥{{book.price}}/本
			</div>总价:{{totalPrice()}}</div>
		</div>
	
	<script>
		
		var vm = new Vue({
			el: '#app',
			data: {
				book:{id:1,price:10,name:'vue入门',count:1},
				discount:0.8,
				deliver:12
			},
			methods:{
				totalPrice:function(){return (this.book.price*this.book.count)*this.discount+this.deliver;}
			}
		})
		</script>
	</body>
</html>

效果图:
在这里插入图片描述
由演示结果可知,可将计算总价定义为一个方法,而不是一个计算属性。两种方法结果相同,而计算属性是基于它们的依赖进行缓存的,简言之,多次访问totalprice计算属性会立即返回之前的计算结果,而不必再次执行函数
而每当触发重新渲染时,调用方法将总是再次执行函数,若有一个性能开销比较大的计算属性,还需要其他计算属性依赖他,如果没有缓存,将不可避免多次执行,methods没有缓存,每次访问都要重新执行。如果不需要缓存,就使用methods
💜💜💜
【计算属性特点】
1.计算属性使处理结构清晰
2.依赖于数据,若数据更新,则处理结果自动更新
3.计算属性内部this指向vm实例
4.在模板调用时,直接写计算属性名即可
5.常用的是getter方法,用于获取数据,也可以使用setter方法改变数据
6.相较于methods,不管依赖的数据是否改变,methods都会重新计算,但是依赖数据不变的时候,computed从缓存中获取,不会重新计算。

7.vue生命周期

生命周期:开始创建–>初始化数据–>编译模板–>挂载DOM,渲染–>更新–>渲染到卸载一系列过程。
vue生命周期可以分为8个阶段:
beforeCreate,created(创建后),beforeMount,mounted(载入后),beforeUpdate,updated(更新后),beforeDestroy,destroyed(销毁后)
vue官方称这些为钩子函数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尾迹双冒号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值