VUE学习笔记--vue指令

1. 简介

VUE是MVVM框架  Vue.js

是渐进式框架,对初学者友好,基本不需要什么前置知识

比如,react需要知道函数式编程,angular需要知道他们之间的依赖关系,vue初学的时候,都可以不用知道

本文是对于我学习vue的一套视频后,整理的学习笔记

2. 指令

vue指令的作用是通过带有v-的特殊属性,实现对dom的响应式加载

v-if

通过一个布尔表达式对dom的上树和下树进行渲染

系列指令:v-if    v-else-if   v-else

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<input v-model="a" type="text"/>
		<p v-if="a<100">{{b}} </p>
		<p v-else-if="a>200">{{c}} </p>
		<p v-else >{{d}} </p>
	
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: 100,
				b: "a小于100的时候展示我",
				c: "a大于200的时候展示我",
				d: "a默认展示我"
			}
		})
	</script>
</body>
</html>

 v-show

显示情况类似,原理不一样,通过控制元素的display属性,对元素的显示和隐藏进行控制,并没有进行上树和下树

如果页面切换特别频繁,使用v-show,因为它不涉及上树、下树
如果页面涉及范围特别大,逻辑复杂,并且页面切换不频繁,使用v-if

v-for
v-for="(item,index) in arr"  :key   key用来给每一项值加元素标识,为了区分元素,实现最小量更新


遍历对象
v-for="(item,key,index) in obj" :key="index" 

遍历数组

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<p v-for="(item,index) in a">{{item}} </p>
	
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: [100,200,300]
			}
		})
	</script>
</body>
</html>

遍历对象

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<p v-for="(item,key,index) in a" :key="key">{{key}}-{{item}} </p>
	
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: {
					name:"张三",
					age:18
				}
			}
		})
	</script>
</body>
</html>

v-text

渲染,与{{}}相似

 {{}}和v-text的区别
 1.{{}}在渲染结果之前,隐约会有编译之前的文本内容,v-text是没有这种现象的
 2.{{}}显示更灵活,中间是可以添加内容的,v-text只能渲染data中的数据,中间不允许插入内容

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<p v-text="a"></p>
	
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: "内容"
			}
		})
	</script>
</body>
</html>

v-html

v-html会识别html标签,中间也不允许插入内容

 

v-cloak

作用是vue实例渲染后结束关联

用法:

 {{}}插值语法在遇到网络延迟的时候,会显示编译前的文本
 可以使用v-cloak结合css解决渲染问题 

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<p v-cloak>{{a}}</p>
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: "<h1>我是h1标签</h1>"
			}
		})
	</script>
	<style>
		[v-cloak]{
			display:none;
		}
	</style>
</body>
</html>

v-once

只会渲染对应的元素一次,数据更新不会引起视图的更新,目的是为了优化页面性能

使用场景通常是没有动态元素的内容,比如一些文章,固定标题

 v-pre
 作用:跳过该元素编译过程,直接显示元素内部的文本,特点就是跳过大量的没有指令的节点
 优化页面的加载性能

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<p v-pre>{{a}}</p>
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: "<h1>我是h1标签</h1>"
			}
		})
	</script>
</body>
</html>

v-on

事件指令,给元素添加事件监听,可以简写为@,比如说onclick方法写成@click

适配js的原生事件,在vue中一律使用去除on,然后添加v-on,或者@

比如 onclick =》  @click 、v-on:click

需要注意的是,所有的方法都必须写在vue的methods中,不允许在外部罗列方法名称

原生的js事件方法不能和vue混用,比如,onclick在vue中不能使用

同名方法会覆盖

方法可以传入参数

如果方法中没有传入值,默认输入会有该方法的事件参数event

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<p>{{a}}</p>
		<button @click="add">+1</button>
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: 100
			},
			methods:{
				add(){
					this.a++
				}
			
			}
		})
	</script>
</body>
</html>

 

v-bind

将普通的w3c属性变为动态属性,让属性具有动态能力,可以用于参数拼接,可以简写为冒号:

v-bind:src  =》 :src

动态的class必须要使用{}包裹,值可以有多个,值的参数是一个布尔值

除了class,还可以用于style

v-model

使用在表单元素中的,实现表单和数据的双向绑定,

输入框中的数据展示为data中的数据,改变输入框中的数据,data数据值也会随之发生改变

<html>
<head>
	<title>vue学习</title>
</head>
<body>
	<div id="app">
		<input type="text" v-model="a"/>
		<p>{{a}}</p>
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				a: 100
			}
		})
	</script>
</body>
</html>

样例:调色板实现

<html>
<head>
	<title>vue学习</title>
	<style>
		.colorBan{
			width:300px;
			height:300px;
			background-color:blue;
		}
	</style>
</head>
<body>
	<div id="app">
		<p class="colorBan" :style="{backgroundColor:'rgb('+r+','+g+','+b+')'}"></p>
		<p>
			<input type="range" v-model="r" max="255" min="0"/>
			<input type="number" v-model="r"/>
		</p>
		<p>
			<input type="range" v-model="g" max="255" min="0"/>
			<input type="number" v-model="g"/>
		</p>
		<p>
			<input type="range" v-model="b" max="255" min="0"/>
			<input type="number" v-model="b"/>
		</p>
	</div>
	<script src="vue.js"></script>
	<script>
		
		var app = new Vue({
			el: '#app',
			data: {
				r: 100,
				g: 100,
				b: 100,
			}
		})
	</script>
</body>
</html>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值