Vue基础笔记

1.Vue具有双向数据绑定、轻量级框架和组件化的优势。

2.Vue和React的区别是Vue用DOM模板,React依赖虚拟DOM

3.methods定义方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>methods定义方法</title>
		<script src="vue.min.js"></script>
	</head>
	<body>
		<div class="app">
			<button @click="show">请单击</button>
			<p>{{totalPrice}}</p>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el:'.app',
			data:{
				message:''
			},
			methods: {
				show() {
					this.message = '成功触发事件'
				}
			}
		})
	</script>
</html>

点击后show()方法执行,message被赋值为‘成功触发事件’

4.computed计算属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>computed计算属性</title>
		<script src="vue.min.js"></script>
	</head>
	<body>
		<div class="app">
			<button @click="num++">增加数量</button>
			<button @click="num == 0 ? 0:num--">减少数量</button>
			<p>{{totalPrice}}</p>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el:'.app',
			data:{
				num:0,
				price:25
			},
			computed: {
				totalPrice() {
					return this.num*this.price 
				}
			}
		})
	</script>
</html>

computed中的方法可以直接通过插值语法绑定到p标签中

5.watch状态监听

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>watch状态监听</title>
		<script src="vue.min.js"></script>
	</head>
	<body>
		<div id="app">
			<input type="text" v-model="city">
		</div>
	</body>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				city:'shanghai'
			},
			watch:{
				city(newName,oldName){
					console.log(newName,oldName)
				}
			}
		})
	</script>
</html>

data中的值名称需要与watch中的函数名相同

6.filter过滤器的使用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>filter过滤器</title>
		<script src="vue.min.js"></script>
	</head>
	<body>
		<div id="app">
			<p>{{message | touppercase}}</p>
		</div>
	</body>
	<script type="text/javascript">
		var vm = new Vue({
			el:'#app',
			data:{
				message:"helloworld"
			},
			filters: {
				touppercase(value) {
					return value.toUpperCase()
				}
			}
		})
	</script>
</html>

输出结果为HELLOWORLD

7.在v-bind属性绑定中使用过滤器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		
		<div id="app">
		  {{ message | toupperCase}}
		  <p :id="dataId | chatId">1111</p>
		</div>

	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
	 var app = new Vue({
	   el: '#app',
	   data: {
	     message: 'Hello Vue!',
		 dataId:'hello'
	   },
	   filters:{
		   toupperCase(value){
			   return value.toUpperCase()
		   },
		   chatId(value){
			   return value ? value.indexOf('o') : ''
		   }
	   }
	 })
	</script>
</html>

代码运行后p标签动态绑定的id为4

8.绑定内联样式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>绑定内联样式</title>
	</head>
	<body>
		<div id="app">
			<div :style="mDiv"></div>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				mDiv:{width:'100px', height:'100px', backgroundColor:'red'}
			}
		})
	</script>
</html>

 

9.绑定样式类

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>绑定样式类</title>
		<style>
			.box{
				width: 100px;
				height: 100px;
				background-color: aqua;
			}
			.inner{
				width: 100px;
				height: 100px;
				background-color: red;
				border: 1px solid #000;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div :class="box">box</div>
			<div :class="inner">inner1</div>
			<div :class="inner">inner2</div>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				box:'box',
				inner:'inner'
			}
		})
	</script>
</html>

10.内置指令

指令说明
v-model双向数据绑定
v-on监听事件
v-bind单向数据绑定
v-text插入文本内容
v-html插入包含HTML的内容
v-for列表渲染
v-if条件渲染
v-show显示隐藏

指令简写:v-on可写为@click,v-bind:class可写为:class,v-bind的简写以此类推

11.v-model 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>v-model</title>
		<style>
			
		</style>
	</head>
	<body>
		<div id="app">
			<input type="text" v-model="text" @change="changeData()">
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				text:''
			},
			methods:{
				changeData(){
					console.log(this.text)
				}
			}
		})
	</script>
</html>

 可以看到input输入框和data中的text通过v-model双向绑定后input中的值发生改变data中text也会进行改变

 

12.v-on

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>v-on</title>
		<style>
			
		</style>
	</head>
	<body>
		<div id="app">
			<p>{{text}}</p>
			<button v-on:click='changeData'>请点击</button>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				text:'点击按钮查看内容'
			},
			methods:{
				changeData(){
					this.text = '我是v-on:click指令,可简写为@click'
				}
			}
		})
	</script>
</html>

 

 

从页面显示结果可以看出通过v-on指令给button按钮绑定了单击事件,点击之后成功出发了事件。v-on:click可简写为@click 

13. 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>v-text</title>
		<style>
			
		</style>
	</head>
	<body>
		<div id="app">
			<p v-text="text"></p>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				text:'text'
			}
		})
	</script>
</html>

v-text是在DOM元素中插入文本内容 ,仅仅是文本内容

14.v-html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>v-html</title>
		<style>
			
		</style>
	</head>
	<body>
		<div id="app">
			<p v-html="text"></p>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				text:'<h2>text</h2>'
			}
		})
	</script>
</html>

 

v-html是在DOM元素中插入HTML标签内容,不仅可以是文本内容,还可以是HTML结构

15.v-bind

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>v-html</title>
		<style>
			
		</style>
	</head>
	<body>
		<div id="app">
			<input type="text" v-bind:value="text">
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				text:'hello world!'
			}
		})
	</script>
</html>

 通过v-bind:value数据单向绑定,data中的值改变时页面会自动更新,但是无法通过页面修改data中的值,所以是单向数据绑定

16.v-for

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>v-for</title>
		<style>
			
		</style>
	</head>
	<body>
		<div id="app">
			<div v-for="(item,i) in list" :key="i">
				<p>索引是{{i}}</p>
				<p>元素内容是{{item}}</p>
			</div>
		</div>
	</body>
	<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	<script>
		var vm = new Vue({
			el:'#app',
			data:{
				list:[1,2,3]
			}
		})
	</script>
</html>

 

v-for可以实现列表渲染,一般用来循环数组。item表示每一项元素内容,i表示当前元素的索引值 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值