Vue复习笔记(一)

vue的基本语法

1.初始化模板

<div id="app">
	{{message}}
</div>
<script>
const app=new Vue({
  el:'#app'
  data:{
   message:'你好啊'
  }
})
</script>

2.mustache语法中,不仅仅可以直接写变量,也可以写一些简单的表达式

	<div id="app">
		{{message+'  '+message}} 鸣人
	</div>
	<script>
	const app=new Vue({
	  el:'#app'
	  data:{
	   message:'你好啊'
	  }
	})
	</script>

3.一些指令(标签的属性位置)

  • v-once对值只进行第一次赋值
  • v-html 把{{message}}里面的内容当做html去解析
  • v-text="message"将标签内的数据用message替换,(不灵活,很少用)
  • v-pre 不解析标签内的语法,也就是说,显示的文本是{{message}}
  • v-cloak 把这个给div以后。new Vue() vue解析之前div有一个属性v-cloak。vue解析以后这个属性就会消失。所以可以在style样式里面利用属性选择器写样式 [v-cloak]{display:none;}这样避免了,如果还没有解析,会出现{{message}}这种东西的尴尬
  • 标签的属性里面不可以使用双括号的语法

4.重要的指令

  • v-bind 有时候需要把一些数据动态绑定到标签的属性里面比方说src。哪个属性需要解析,就在哪个属性前加上v-bind: 。比如 v-bind: src="imageURL"这个时候就imageURL当做变量了(简写:就是属性前面加个冒号 :class="{类名1:true,类名2:false}" 这里的值可以放个对象,对象里面是键值对的形式,可以把值换成变量去控制bool,来返回相应的类名)
  • v-on:click="btnClick"
    点击按钮控制显示颜色
	
	<h2 v-bind:class="‘active’:isActive,‘line’:isLine"></h2>
	<button v-on:click="btnclick">按钮</button>
	
	<script>
	const app=new vue({
	  el:'#app',
	  data:{
	  isActive:true,
	  isLine:true
	  },
	  methods:{
	  btnclick:function(){
	  this.isActive=!this.isActive
	  }
	  }
	})
	</script>

绑定class有两种方式(一般很少直接绑定一个字符串)

-v-for="m in items" 这个写到 li 里面;v-for="(m,index) in items" 需要用到下标的时候。

-v-bind 绑定style。动态绑定样式。(做组件的时候,可以给组件添加初始化数据,样式)
:style="{css的属性名:属性值}" :style="{fontSize:fz+'px'}" 前面就是一个key,所以不用加单引号。 也可以 :style="[]" 这种就是对象数组,把对象放到数组里面

5.计算属性
--{{fangfa()}}
--除了el,data,methods,以外还有一个computed 计算
--computed是计算属性的 computed:{fullName:function(){ return this.firstName+' '+this.lastName }} 然后可以直接 {{fullName}}
--computed 多次调用,只会计算一次(会做缓存,观察里面的数据有没有发生变化,只要没有变化,就不会再执行)。methods调用几次算几次

--计算属性的set:和get:。每一个都包含。

	computed:{
	
	
	fullName:{
		get:function(){
				return this.firstName+" "+this.lastName;
			}
		},
		//上面的就可以简化成
	fullName:function(){
				return this.firstName+" "+this.lastName;
		}
		
		
}

6.块级作用域 let 和 var
--1、let有兼容性问题,手机端开发不建议用,有块级作用域
--2、var 在语言设计上有缺陷,修复就有可能出现很多浏览器不兼容。可以把let(有块级作用域)看成更完美的var(if,for,没有块级作用域,代码块里面定义的变量,外面也能访问)
--3、闭包解决了作用域的问题,函数是有作用域的。(js貌似只有函数和全局作用域)
--4、闭包(function(i){ })(i) 将一个一个变量传给了一个函数,并且执行这个函数他就会有属于它自己的作用域,不会影响外面

const 修饰符,修饰成常量,复制后不可以再修改。定义的时候就必须进行初始化。常量的含义是指向的对象不能修改,但可以修改对象内部属性的值。比如:const obj={name:'why'} ; obj.name='yes' 这个样子是可以的(其实就是里面的指针不能修改)

7.对象的增强写法

es6语法 属性的增强写法


const name=‘why’;
const age=18;
const height=1.88;
es5的写法
const obj={
name:name,
age:age,
height:height
}
es6写法
const obj={
name,
age,
height
}

函数的增强写法

es5

const obj={
run:function(){},
eat:function(){}
}
es6
const obj={
run(){},
eat(){}
}

浏览器不支持ES6可以用工具转一下

8.v-on 绑定事件监听器
缩写:@
预期:Function|Inline Statement|Object
参数:event

<button v-on:click="counter++"></button>
<button v-on:click="increment"></button>
<button @click="increment"></button>
<script>
const app=new Vue({
el:'#app',
data:{counter:0},
methods:{
    increment(){
   	//方法体
   	this.counter++;
    }
}
})

</script>

v-on的传参问题:
1、方法如果没有参数,后面的小括号可以不添加(此处仅仅是事件监听的时候可以省掉,但是在{{}} 的时候不可以省掉)
2、如果函数需要参数,但是没有传入参数(只是加上括号),那么函数的形参为undefined
3、调用函数的时候,省略小括号。 但是方法本身需要一个参数,这个时候Vue会默认将浏览器产生的event事件对象作为参数传到方法里。
4、写js方法,如果参数没有传入,调用的时候会报错
5、如果方法定义的时候,需要event对象,同时又需要其他参数。(第一个参数会是event,第二个是undefined)
6、 @click="increment(123,$event)" 手动获取浏览器参数的event对象 $event

event对象:代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
js中 标签点击事件方法传入this:指的就是当前标签对象
js中 括号中不传入this参数,那么this在这里代指的就是整个doucumeng对象

v-on 修饰符

1、.stop修饰符
div有一个点击事件,div里面的button有个点击事件。点击div的时候会出现事件冒泡。
所以用修饰符

<div @click=“divClick”>
	<button @click.stop="btnClick"></button>
</div>

2、.prevent修饰符
阻止button的submit提交事件

3、 .监听某个按钮的点击{keyCode|keyAlias}

	<input @keyup.enter="keyup"  />  //监听回车
  

4、 .native 监听组件元素的原生事件
5、 .once 只触发一次回调

posted @ 2020-04-14 09:54  不知而无畏  阅读(197)  评论(0)    收藏  举报