Vue
- 什么是vue
vue是一种规范,是mvvm模型,基于双向绑定的前端框架;数据改变,页面就变;页面改变,数据就变。 - ECMAScript6
ES6声明变量的方式:
1.var 声明全局变量;
2.let 声明的变量只在该代码块中有效;
3.const 声明常量 一旦赋值不能更改。 - 解构表达式
var arr=[1,5,4];
//解构数组
var [a,b,c] =arr;
console.log(a,b,c)
//解构对象
var stu={
name:"洪七公",
age:42
}
var{name,age}=stu;
console.debug(name,age)
- 箭头函数
箭头函数this是和当前创建环境的this是一致的
如果箭头函数外面还有函数,那么箭头函数中的this是和外层函数的this是一致的;如果没有,this就指向window。
var stu={
name:"周董鱼",
age:25,
//方式一
skill:function () {
console.debug(this.name+this.age)
},
//方式二 箭头函数
skill2:()=> {//箭头函数this是和当前创建环境的this是一致的;
// 如果箭头函数外面还有函数this就和外层函数的this一致,如果没有就指向window
console.debug("指向window")
},
//方式三
skill3(){
console.debug("简写方式")
}
}
//调用方法
stu.skill();
stu.skill2();
stu.skill3();
hello_vue
使用vue需要引入vue核心库,引入之后会有一个内置对象vue;
{{}} :胡须表达式用来取值;
el:主要用来挂载指定的dom,
可以挂载的选择器:
id选择器 “#id名”
类型选择器 “.class名”
标签选择器 “标签名”
一般使用id选择器,因为id是唯一的
data:里面准备数据
methods:里面写vue实例的所有方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<div id="god">
{{msg}}
<span>{{msg}}</span>
--{{person}}--{{person.name}}--{{hello()}}
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
msg:"洪七公",
person:{
name:"王天霸",
age:22,
sex:"男"
},
},
methods:{//vue实例中的方法都放在methods中
hello(){
return "王老五"
}
}
});
</script>
</html>
- 算术表达式
可以 +、-、*、/、%
在vue中三目运算表示false的有6个:false、NaN、null、""、0、undefined
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<div id="god">
{{num}}+{{num1}}={{num+num1}}<!-- + - * / % -->
num+num1={{num+num1}}
<!--三目运算 默认为false的有 false,NaN,null,undefined,"",0-->
{{sex?"男":"女"}}
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
num:5,
num1:4,
sex:""
}
});
</script>
</html>
- 操作字符串
胡须表达式可以调用对应类型的方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<div id="god">
<!--胡须表达式可以调用对等类型的方法-->
{{str}}<br/>{{str.length}}<br/>{{str.substring(0,2)}}<br/>{{str.substr(0,4)}}
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
str:"雷公电母,听我号令"
}
});
</script>
</html>
Vue指令
- v-text&v-html
v-text:在指定的标签进行设置值,如果你设置的代码有html代码,它只会当成一个纯文本进行展示;类似于js中的innerText;
v-html:在指定的标签进行设置值,如果你设置的代码有html代码,它是能被浏览器所解析的 类似于js中的innerHTML;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<div id="god">
<span v-text="text">text</span><!--里面的内容都会被覆盖-->
<span v-html="html">html</span>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
text:"<h1>内容全部以纯文本的方式展示</h1>",
html:"<h1 style='color: red'>内容会渲染之后进行展示</h1>"
}
});
</script>
</html>
- v-if—判断
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<!--
v-if 判断
-->
<div id="god">
<span style="color: red" v-if="age>30&&age<60">中年</span>
<span style="color: deepskyblue" v-else-if="age<30&&age>18">青年</span>
<span style="color: deeppink" v-else-if="age<18">未成年</span>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
age:1,
}
});
</script>
</html>
- v-for–循环迭代
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<div id="god">
<span v-for="v in num">{{v}}</span>
<ul>
<li v-for="v in msg">{{v}}</li>
<li v-for="(v,i) in arr">{{v}}---索引{{i}}</li>
</ul>
<select>
<!--v是取里面的值 k是取对应的key i是取对应的索引-->
<option v-for="(v,k,i) in person">值:{{v}}--key:{{k}}---索引:{{i}}</option>
</select>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签*/
el:"#god",
/*data准备的数据*/
data:{
num:10,
msg:"洪七公",
arr:["a","b","c"],
person:{
name:"王天霸",
age:22,
sex:"男"
},
}
});
</script>
</html
- v-bind—绑定属性
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<div id="god">
<!--原生方式获取图片-->
<img src="img/1.jpg" width="100%" height="100%" alt="图片不存在"/>
<!--①使用v-bind 来绑定属性加载图片-->
<img v-bind:src="src" v-bind:width="width" v-bind:height="height" v-bind:alt="alt">
<!--②简写方式-->
<img :src="src" :width="width" :height="height" :alt="alt">
<!--③直接绑定对象-->
<img v-bind="option">
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
src:"img/1.jpg",
width:"100%",
height:"100%",
alt:"图片不存在",
option:{
src:"img/1.jpg",
width:"100%",
height:"100%",
alt:"图片不存在"
}
}
});
</script>
</html>
- v-model—双向绑定
当data中的数据被修改时,基于数据绑定机制, 自动会把新的内容自动更新到value属性上. 页面视图也发生了改变.
支持的标签有:
input、select、textarea
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<!--
v-model 是双向绑定
支持的标签有 input select textarea
-->
<div id="god">
<!--在文本框中输入内容,绑定的值也会发生变化-->
<input type="text" value="text" v-model="text">{{text}}<br/>
<!--选择框-->
<input type="checkbox" v-model="hobbys" value="lq">篮球<br/>
<input type="checkbox" v-model="hobbys" value="ymq">羽毛球<br/>
<input type="checkbox" v-model="hobbys" value="pq">排球<br/>
{{hobbys}}<br/>
<!--单选框-->
<input type="radio"v-model="sex" value="1">男
<input type="radio"v-model="sex" value="0">女
{{sex}}<br>
<!--下拉框select-->
<select v-model="food">
<option value="hsr">红烧肉</option>
<option value="yjr">盐煎肉</option>
<option value="xsr">小酥肉</option>
</select>
{{food}}<br/>
<!--文本域textarea-->
<textarea rows="20" cols="20" v-model="textarea"></textarea>
{{textarea}}
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
text:"文本",
food:"yjr",
hobbys:["pq"],//可以设置默认选中的值
sex:0,//默认选中女
textarea:"文本域"
}
});
</script>
</html>
- v-on—绑定事件
调用方法传参时需要加括号,无参可以不加
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<!--
v-on 绑定事件 绑定表达式或者事件
-->
<div id="god">
<!--完整写法-->
<input type="button" v-on:click="num++" value="按下加一">{{num}}
<!--简写 调用方法时 传递参数需要加括号 -->
<input type="button" @click="show('传参加括号')" @mouseout="show" value="弹弹弹">
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
num:0,
},
methods:{
show(msg){
alert("突然出现。。。。"+msg)
}
}
});
</script>
</html>
- v-show—显示或隐藏
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<!--引入vue核心库之后 默认有一个Vue内置对象-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
<body>
<!--
v-on 绑定事件 绑定表达式或者事件
-->
<div id="god">
<span v-show="isShow">这是秘密...</span>
<input type="button" value="显示或隐藏" @click="show">
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
/*el 表示配置挂载的标签 一般都挂载id选择器 */
el:"#god",//挂载类型选择器(.god),挂载标签(div)
/*data准备的数据*/
data:{
isShow:true
},
methods:{
show(){
this.isShow=!this.isShow;
}
}
});
</script>
</html>