赞
踩
Vue是啥?
它是构建用户界面的JavaScript框架(让它自动生成js,css,html等)
引入Vue
let和const
let
先声明后使用,不存在变量提升
let
不能重复定义,但是可以修改
var
既可以先声明后使用,也可以先使用后声明,这样不会报错,会打印undified,而let必须是先 声明后使用,如果没有声明就会报错
const
a =‘hello’ //const就是定义一个常量//常量是不能修改的
模板字符串
'${变量名}'
(是esc下变的引号)
箭头函数
funcion(){} == ()=>{}
存在问题:
1.this的指向问题
2.arguments不能用
通过定义对象取值
<div id="app"> <p>{{msg}}</p> <p>{{ 80+2 }}</p> <p>{{ 20>30 }}</p> <h1 v-text="msg"></h1> <h1 v-html="hd"></h1> <h1 v-html="str"></h1> </div> <script> new Vue({ el:"#app", //表示当前这个元素开始使用vue data:{ msg:"你好啊", hd:"<input type='button' value='啦啦'>", str:"你妹的" } }) </script>
可以插入标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <div v-html="htmlstr" v-show="test"></div> </div> <script> new Vue({ el:"#app", //表示当前这个元素开始使用vue data:{ htmlstr:'<textarea></textarea>', test:false //默认是隐藏的 }, methods:{ qita:function () { this.test = !this.test //当一点击其他的时候让显示 } } }); </script> </body> </html>
对象单体模式
var person = {
name:'丫丫',
age:12,
fav(){
console.log(this.name,this.age);
}
}
person.fav();
构造函数的方式创建对象
function Animal(name,age) {
this.name = name;
this.age = name;
}
Animal.prototype.showName = function () {
console.log(this.name);
};
var dog = new Animal('小黑',11)
面向对象
class Animal{
constructor(name,age){
this.name = name;
this.age = age;
}
showName(){
console.log(this.name)
}
}
var d = new Animal('小黑',11);
d.showName();
指令系统:V-*
(1)v-if
<div v-if="type === 'A'"> A </div> <div v-else-if="type === 'B'"> B </div> <div v-else-if="type === 'C'"> C </div> <div v-else> Not A/B/C </div> ... data:{ type:'A', }
(2)v-for
<div>
<img :src="currentSrc" alt="">
<ul>
<li v-for = "(item,i) in imageArr">{{i+1}}</li>
</ul>
</div>
data:{
imageArr:[
{id:1,src:'images/img1.jpg'},
{id:2,src:'images/img2.jpg'},
{id:3,src:'images/img3.jpg'}
],
},
(3)v-bind 等于 : (绑定属性)
<h3 v-show = 'isshow' v-bind:title="title">哈哈哈</h3>
data:{
isshow:true,
},
(4)v-on 等于 @(绑定事件)
<button v-on:click = "clickhander" >切换</button>
<div v-if = 'show'>嘻嘻</div>
data:{
show:true,
},
methods:{
clickhander:function(){
this.show = !this.show;
},
}
(5)v-model
<input type="text" v-model='msg'>
<h3>{{msg}}</h3>
计算属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <form action=""> <input type="text" v-model='msg'> <h3>{{msg}}</h3> </form> <div> {{reverseStr}} </div> <button @click = "changetext">修改</button> </div> <script type="text/javascript" src="vue.js"></script> <script> var app = new Vue( { el:"#app", //所有的数据都放在数据属性中 data:{ msg:'123', text:'hello word' }, methods:{ changetext(){ this.text = 'hello long'; } }, // 计算属性(返回的相关数据都会被监听起来) computed:{ reverseStr(){ return this.text.split('').reverse().join(''); } } } ) </script> </body> </html>
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> img{ width: 600px; height: 600px; } </style> </head> <body> <div id="app"> <!-- mouseenter:鼠标箭头进入事件 mouseleave: 鼠标箭头离开事件--> <div class="img" @mouseenter = "closeTimer" @mouseleave = 'openTimer'> <img :src="currentSrc" alt=""> <ul> <li v-for = "(item,i) in imageArr" @click= "currentHandler(item)">{{i+1}}</li> </ul> </div> <button @click = "nextImage">下一张</button> </div> <script type="text/javascript" src="vue.js"></script> <script> var app = new Vue( { el:"#app", //所有的数据都放在数据属性中 data:{ imageArr:[ {id:1,src:'images/img1.jpg'}, {id:2,src:'images/img2.jpg'}, {id:3,src:'images/img3.jpg'} ], currentSrc:'images/img1.jpg', currentindex:0, timer:null }, //事件 methods:{ currentHandler(item){ this.currentSrc = item.src; }, nextImage(){ if(this.currentindex == this.imageArr.length-1) { this.currentindex = -1; } this.currentindex++; this.currentSrc = this.imageArr[this.currentindex].src; }, // 关闭定时器 closeTimer(){ clearInterval(this.timer); }, // 打开定时器 openTimer(){ this.timer = setInterval(this.nextImage,2000); } }, //定时任务 created(){ this.timer = setInterval(this.nextImage,2000); } } ) </script>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="music"> <audio :src="currensong" autoplay = "" controls = "" @ended = "nextsong"></audio> <ul> <li v-for = "(item,index) in audios" @click = "clickhandle(index)"> <h3> 歌名:{{item.name}} </h3> <p> 歌手:{{item.author}} </p> </li> </ul> <button @click = "addsong">添加歌曲</button> </div> <script type="text/javascript" src="vue.js"></script> <script> var songs = [ {id:1,name:"陪着你走",author:"龙飞",src:"music/Gibb-Z ICE - 陪着你走.mp3"}, {id:2,name:"陪着你走",author:"龙飞",src:"music/浮光 - 斑马,斑马.mp3"} ] var music = new Vue({ el:"#music", data:{ audios:songs, currenindex:0, }, methods:{ clickhandle(index){ this.currenindex = index; }, nextsong(){ this.currenindex++; }, addsong(){ this.audios.push({id:2,name:"陪着你走",author:"龙飞",src:"music/浮光 - 斑马,斑马.mp3"}); } }, computed:{ currensong(){ // 计算的是计算数据属性 return this.audios[this.currenindex].src; } }, created:{ } }) </script> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。