Vue学习

github下载文件 选择tags下载稳定版本 dev为正在开发版本

vue开发环境

1. 必须装node.js
2. 装vue脚手架工具  npm i -g vue-cli @版本号 ( npm install - globol vue-cli)

创建vue项目

	vue init webpack 项目名 (都选no)
	cd 项目名
	npm install / cnpm install 
	npm run dev 运行项目目录			 

vue常用扩展插件

vue-cli vue脚手架  		vue-router 路由			vuex 状态管理
vue-lazyload 懒加载		vue-scroller 页面滑动相关		
mintui	移动端			element-ui pc端

使用

	引入vue文件后,会有全局的变量vue使用
	new Vue({     	启动应用 new Vue(选项对象)选项对象是告诉vue做什么
	    el:"#app",  选择器、选择body中的某个元素作为模板
	    data:{     	数据对象 做模板时可拿到该对象的数据  对象形式
	        a:"hello"
	    }
	})
	    let data = {message:'abc' a:'11111111'}
	    new vue({
	        el:'#app',
	        data:{
	            data:data 定义在data中的属性和定义在methods中的方法,
	                      都会放在实例对象上
	        },
	        methods: {			methods Object 将来使用在模板中的方法
		         changeShow(){  方法中的this都指向当前实例对象
	                console.log('执行我了');
	                console.log(this.show)
	                this.show = !this.show;
	            }
	        }
	    })
	重点:操作数据上,当数据发生变化,视图会自动更新。
	      更新只会更新数据变化对应的元素,其他的元素不会更新
	      
	let vm = new Vue({ 对象上很多属性,有$开头的是Vue内置的属性
	    el: '#app', //document.getElementById('app')
	    data: {  	数据对象,将来使用在模板中
	        message: 'hello'
	    }
	});     
	在选项对象中写入在data,methods、computed里面的属性,都会挂载在实例上
	更新DOM,只会更新数据改变的元素,其他元素不更新
	
	let arr = [1,2,3,4,5]; 需求:是每一项都*2
	命令式
	let newArr = [];
	for( var i = 0; i < arr.length; i++ ){
	    newArr.push(arr[i] * 2)
	}
	声明式
	let newArr2 = arr.map(item => item * 2)

vue语法

文本插值 {{表达式}}    <p>{{a}}<p>  <p>{{1+1}}</p>

行间中写属性,要符合html行间的书写规则   

在行间中写{{}} 并不会被解析为表达式

指令

指令作用:
    绑定数据和DOM,当数据发生变化,绑定DOM的数据也会发变化
    规则:以v-开头的特殊的行间自定义属性

v-bind 数据绑定

   v-bind:属性名='表达式'  简写 :属性名='表达式'  v-bind:class="{yellow : index == currentIndex}
   
  	:class="{xxx}"
     {
       class名字:表达式(成立,元素添加这个class,不成立,不添加)
     }
	     xxx字符串  
	     xxx对象 <p:class="{classA:isA,classB:isB}"></p>   new Vue({data:{ isA:true,isB:false}})
     
  	:style="{}"
       {
           样式名:'样式值'
       }      
	:src="地址"	

v-for 循环 (作用在需要重复生成的结构上)

    v-for="value,index in 数组"
     
    v-for="value in 数组"
   
    v-for="value,key,index in 对象"

v-if 判断

    v-if="表达式" 表达式成立渲染指令,不成立不渲染       <p v-if="false">
    
    v-else-if="表达式"     <p v-else-if="1+1">测试</p>
    
    v-else   <p v-else>测试</p>

v-show 控制显示隐藏(并没有移出添加元素,默认显示)

    v-show="表达式" 表达式成立,渲染这个指令,不成立不渲染 

v-on 事件

     v-on:事件名="表达式"    表达式直接可以写点击后执行的代码, 表达式可以是一个函数
          
     v-on:事件名="函数名字"  事件对象作为函数的第一个参数拿到   @click="changeShow"

     v-on:事件名="函数名字()" 模板中有全局$event,手动传给函数 @click="changeShow(value,$event)"

	事件修饰符 
		 1. 阻止事件冒泡   event.stopPropagation()  简写  @click.stop="smallBtn()"
 		 2. 阻止默认行为   event.preventDefault()   简写  @click.prevent="baiduBtn"
 	按键修饰符
 		 event.keyCode===13   简写  @keyup.13="test"   @keyup.enter="test"  

频繁切换一个元素显示隐藏,使用v-show 切换display样式

    v-if,频繁的切换,会导致元素从页面中移出添加,性能不好
    一开始根据某个条件成立与否来决定是否渲染某个区域,建议使用 v-if

v-model 双向数据绑定

双向数据绑定: 
	数据 绑定到模板
	模板中交互会改变数据 模板会自动更新
	
语法 
	v-model="表达式"        自动收集表单数据的值
	
作用在表单控件上 	
	input   select    textarea
	input   value     checked 	 根据不同元素的可交互的属性,进行绑定和监听

v-model做了两件事情:
	1. 把表达式的值绑定给元素可交互的属性
	2. 监听交互属性的变化,赋值给表达式

**

computed 计算属性

计算得到的一个属性,计算得到的值会有很多的逻辑,逻辑执行后才能得到计算属性的值,常把这些逻辑放在函数中

	computed { 属性也会放在实例上,内部会把函数执行了,每一个key值对应的value是函数执行后的返回值
		custome(){
			reutrn 值
		}
	}
	不建议在模板中写很多逻辑判断,在模板中放入太多的逻辑会让模板过重且难以维护		
	
什么时候执行?
	初始化显示、相关data发生变化

watch 监视属性

	watch:{	配置监视
			firstName:function (newval,oldval){
				
			}
	}

在这里插入图片描述

vue生命周期钩子(回调)

beforeCreate
created 在实例创建完成后被立即调用
beforeMount 在挂载开始之前被调用
mounted  实例被挂载后调用
beforeUpdate  数据更新时调用,发生在虚拟 DOM 打补丁之前
updated
activated
deactivated
beforeDestroy 实例销毁之前调用。在这一步,实例仍然完全可用
destroyed
errorCaptured

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值