vue.js杂记

1.声明式编程

即声明后,可以多次运用
例如:

const aaa=new Vue({
	    	el:'#aaa',    //挂载要绑定的元素
	    	data:   {             //定义数据
	    		message:'blah哈哈哈哈哈'
	    	}
	    	methods:{        //添加方法
			
						}
	    })

在这里插入图片描述

2.遍历的运用

若数组中存在多个元素

            data:{             //定义数据
	    		message:['apple','banana','orange']
	    	}

若想让元素分别存在于li中,可以

<div id='aaa'>
	<ul>
		<li v-for="item in message">
			{{item}}
		</li>
	</ul>
</div>

用v-for遍历对象中的元素
<li v-for="item in man">{{item}}</li>
<li v-for="(item,key) in man">{{item}}->{{key}}</li>

3.实现计步器

利用v-on:click

<div id='aaa'>
	<h2>当前计数:{{counter}}</h2>
</ul>
    <button v-on:click="add">+</button>
    <button v-on:click="sub">-</button>
    </div>

在代码中添加methods

		data:   {
	    		counter:0
	    	},
	    methods:
	    	{
	    		add:function(){
	    			this.counter++;
	    		},
	    		sub:function(){
	    			this.counter--;
	    		}
	    	}

4.vue的mvvm

在这里插入图片描述

5.插值操作

{{}} 称为mustache语法

v-once 只发生一次,不会随着数据的改变而改变
在这里插入图片描述
v-html 以HTML的格式进行解析

data:   {
	    		url:'<a href='http://www.baidu.com'></a>'
	    	},
<h2 v-html='url'></h2>

v-pre 跳过翻译过程,直接展示mustache语法

v-cloak 在这里插入图片描述

6.用v-bind绑定属性值

不能用mustache语法直接用在属性中,得用v-bind

	url:'http://www.baidu.com'

	<img v-bind:src="url">
	<a v-bind:href="url">bidu</a>

	更简洁的,可以用语法糖的写法
	<img :src="url">
	<a :href="url">bidu</a>

绑定class属性

用法一:直接通过{}绑定一个类

<h2 :class="{'active': isActive}">Hello World</h2>

用法二:也可以通过判断,传入多个值

<h2 :class="{'active': isActive, 'line': isline}" >Hello World</h2>

用法三:和普通的类同时存在,并不冲突

注:如果isActive和isLine都为true,那么会有title/active/line三个类

<h2 class="title" :class="{'active': isActive, 'line': isLine}">Hello World</h2>

用法四:如果过于复杂,可以放在一个methods或者computed中注: classes是一个计算属性

<h2 class="title" :class="classes">Hello World</h2>

也可以用数组来绑定(不常用)

绑定style

   <h2 :style="{属性名:属性值}"></h2>    //属性值都要用""包裹起来

属性名用驼峰,不能用-连接
数组 语法绑定

<li :style="[fz,fc]">hhhhhhh</li>

fz:{fontSize:'100px'},
fc:{color:'yellow'}

7.计算属性

vue对象的一个属性,用于对属性的计算

let aaa =new Vue({
	
	computed:{}
})

计算属性一般没有set方法,只有get方法,所以为只读属性,所以不需要(),可视为一个属性

计算属性在执行前会有缓存,会观察结果是否发生变化,多次使用只会调用一次,而methods会被频繁调用

8.块级作用域

在ES5及之前,if与for均无块级作用域,只有function有,ES6后加入let,使if,与for有了作用域

const

1.注意一: 一且给const修饰的标识符被赋值之后,不能修改
const name =’ why’ ;
name =‘ abc’ ;

2.注意二: 在使用const定义标识符,必须进行赋值 ;

3.注意三:常量的含义是指向的对象不能修改,但是可以改变对象内部的属性.

9.ES6增强写法

在这里插入图片描述
在这里插入图片描述

10.事件监听 v-on

v-on: 可简写成:@

v-on的参数问题

  • 1.没有参数时,有无小括号都一样
  • 2.有一个参数
 		<button @click="add()">+</button>
        <button @click="add">+</button>

在事件定义时,写方法时省略了小括号,但是方法本身是需要一个参数的,这个时候,Vue会默认将浏览器生产的event事件对象作为参数传入到方法

  • 3.又需要其他参数又需要event对象时,可以用 $event 手动获取

v-on的修饰符

  • 取消事件的冒泡@click.stop
  • 取消默认事件,如submit按钮的自动提交@click.prevent
  • 只发生一次@click.once

11.v-if,v-else-if,v-else

v-if 最基本用法:是否让标签中的内容呈现出来(true/false)
其余的和if一样

    <h2 v-if="false">当前计数:{{counter}}</h2>

v-else-if与else if的效果一样
v-else 与v-if相配对,不用附加布尔值,与v-if的效果相反

12.v-show与v-if的区别

■v-show的用法和v-if非常相似,也用于决定一个元素是否渲染

■v-if和v-show都可以决定一个元素是否渲染 ,那么开发中我们如何选择呢?

v-if当条件为false时,压根不会有对应的元素在DOM中。v-show当条件为false时,仅仅是将元素的display属性设置为none而已

■开发中如何选择呢?

当需要在显示与隐藏之间切片很频繁时,使用v- show口当只有一次切换时,通过使用v-if

13.key的绑定

在这里插入图片描述

14.数组的响应式方法

  • push
  • pop
  • shift
  • unshift
  • splice
  • sort
  • reverse

15.遍历

1.for(let i in 数组){}
i为索引值

for(let item of 数组)
直接获得数组中的元素

高阶函数
filter/ map/reduce

filter中的回调函数有一个要求:必须返回一个boolean值

true:当返回true时,函数内部会自动将这次回调的n加入到新的数组中
false: 当返回false时, 函数内部会过滤掉这次的n

const nums =[ 10, 20, 111, 222, 444, 40, 50 ]
let newnums=nums.filter(function(n){
		return n<100
})

map

const nums =[ 10, 20, 111, 222, 444, 40, 50 ];
			let newnums=nums.map(function(n){
						return n*2
					})

reduce
对数组中的所有元素进行汇总(相加)

const nums =[ 10, 20, 111, 222, 444, 40, 50 ];
			let total=nums.reduce(function(prevalue,n){
						return prevalue+n
					}   ,0)

连结运用

			let total=
			nums.filter(function(n){
				return n<100
			}).map(function(n){
				return n*2
			}).reduce(function(prevalue,n){
						return prevalue+n
					}   ,0)

箭头函数则更加迅速

let total=
nums.filter(n=>n<100).map(n=>n*2).reduce((prevalue,n)=>prevalue+n)

15.v-model

用于表单元素与vue的data的双向绑定

<input type="text" v-model="message" />
以下做法也有同样的效果
<input type="text" :value="message" @input="message=$event.target.value" />

一个例子:
在这里插入图片描述

在单个checkbox的运用

			<input type="checkbox" v-model="agree" />男
			你的选择:{{agree}}
			<button :disabled="!agree">下一步</button>
			
			data:{agree:true}

在多个checkbox的运用

<input type="checkbox" v-model="hobbies"  value="篮球"/>篮球
<input type="checkbox" v-model="hobbies"  value="足球"/>足球
<input type="checkbox" v-model="hobbies"  value="羽毛球"/>羽毛球
<input type="checkbox" v-model="hobbies"  value="乒乓球"/>乒乓球
<h2>你的爱好是:{{hobbies}}</h2>

			data:{
					hobbies:[]
				 }

在select的运用
在这里插入图片描述
值绑定
在这里插入图片描述
v-model的修饰符
在这里插入图片描述

16.组件化

在这里插入图片描述
1.创建组件构造器
const aaa=vue.extend({template: `` } )

template:``后跟的为html代码,称为模板
其中template后面不是单引号

2.注册组件
Vue.component('组件要运用的标签名',组件构造器)

此方法创建的为全局组件,可以在多个vue实例中使用

局部组件在vue的对象中创建

const aaa=new Vue({
	    	el:'#aaa',    //挂载要绑定的元素
	    	components:{
				组件要运用的标签名:组件构造器
						}
	    })

3.使用组件
<组件要运用的标签名></组件要运用的标签名>

父子组件
当有两个组件构造器时,可以在其中一个构造器中加入components,在里面创造一个局部组件

`const aaa=vue.extend({
template:      ``
components:{
	
}
 
})

语法糖构建全局组件(直接将extend的{}对象写在component里)
即省略了extend()

Vue.component('组件要运用的标签名',{
template:`` 
})

局部

const aaa=new Vue({
	    	el:'#aaa',    //挂载要绑定的元素
	    	components:{
				组件要运用的标签名:{template:`` }
						}
	    })

组件分离
1.将组件写在script(type=“text/template” )标签中,并设置id,然后再将template后需要的html标签换成 #qqq

<script type="text/template" id="qqq">
			<div>
				<h1>hhhhh</h1>
			</div>
			</script>


Vue.component('组件要运用的标签名',{
template:`#id名` 
})

2.直接用一个template标签将需要封装的html代码放入,设置id,再带入

17.组件的data等属性

组件不能直接读取vue中的data,methods,但是组件拥有自己的数据库

组件自己的数据存放在哪里呢?
口组件对象也有一个data属性k也可以有methods等属性,下面我们有用到)
口只是这个data属性必须是一个函数
口而且这个函数返回一个对象,对象内部保存着数据

Vue.component('cpn',{
			template:`#qqq`,
			data(){
				return {   title : 'iiiiiiiiiiiii'   }
			}
		})

18.父子组件间的通信

在这里插入图片描述
在这里插入图片描述
当传递时,需要在组件
`<标签 v-bind:子组件=“父组件”></标签>

html不支持驼峰命名

父传子(props)

1.利用数组==:props:[“cmessage”,“cmovies”]
2.类型限制
props"{
子组件的名:数据类型
//cmovies:Array
}
3.提供默认值及必传值

props:{
		cmessage:{
		type:String,
		default:100,     //默认值
		required:true/false     //是否需要传值
							}
}

在这里插入图片描述

子传父

利用自定义事件
1.在子组件中添加一个事件
例如@click

<button v-for="item in array" @click="btnclick(item)">{{item}}</button>

2.在子组件中加入一个方法

methods:{
				btnclick(item){
					this.$emit('itemclick',item)     //第一个参数是事件名称
													//第二个是要传的内容
				}
			}

3.在父组件中加入一个方法

methods:{
				cpnclick(item){
					console.log(item)
				}

4.在父组件的标签中接收子组件的事件

		<cpn @itemclick="cpnclick"></cpn>

直接访问

父访问子
$children或者$refs
把子组件放于一个数组中
$children[0]为第一个子组件
用得更多的是$refs,它不是一个数组,本身就是一个对象类型且为空,可以在子组件的标签中添加ref属性并赋值

<cpn ref="rrr"></cpn>

父组件通过this.$refs.rrr
来访问子组件

子访问父
$parent

访问根组件$root

el与template的关系

在vue对象中,也可以加入template属性,加入的内容会替换掉el所绑定标签的所有内容
在这里插入图片描述

19.VUE的生命周期

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值