文章目录
新建vue对象
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
{{message}}
<div>
{{userInfo.username}} {{userInfo.age}}
</div>
<ul>
<li>{{area[1]}}</li>
</ul>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
message : "齐威龙",
area:["杭州","上海","北京"],
userInfo:{
username:"刘德华",
age:65
}
},
});
</script>
</html>
v-text
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<div v-text="message"></div>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
message : "齐威龙!!!",
},
});
</script>
</html>
v-html
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<div v-html="message"></div>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
message : "<a href='https://www.baidu.com'>百度</a>",
},
});
</script>
</html>
v-on 事件
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<input type="button" v-on:click="clickMe" value="点击">
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
message:"大家好,我是一点点"
},
methods:{
clickMe:function(){
alert(this.message);
}
}
});
</script>
</html>
v-show
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<button v-on:click="beautyShowImg">{{buttonMsg}}</button>
<img src="beauty.jpg" v-show="beautyShow" style="width: 100px;height: 100px;">
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
beautyShow:false,
buttonMsg:"点击显示图片",
},
methods:{
beautyShowImg:function(){
this.beautyShow = !this.beautyShow;
if(this.beautyShow){
this.buttonMsg = "点击隐藏图片";
}else{
this.buttonMsg = "点击显示图片";
}
}
}
});
</script>
</html>
v-if
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<button v-on:click="beautyShowName">{{buttonName}}</button>
<p v-if="isShow">齐威龙</p>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
beautyShow:false,
buttonName:"点击显示名字",
},
methods:{
beautyShowName:function(){
this.isShow = !this.isShow;
if(this.isShow){
this.buttonName = "点击隐藏名字";
}else{
this.buttonName = "点击显示名字";
}
}
}
});
</script>
</html>
v-bind
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<img v-bind:src="imgSrc" style="width: 100px;height: 100px;">
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
imgSrc:"beauty.jpg",
},
});
</script>
</html>
v-for
遍历数组
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<ul>
<li v-for="(item,index) in arr">{{index}} {{item}}</li>
</ul>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
arr:[1,2,3,4,5],
},
});
</script>
</html>
遍历对象
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<ul>
<li v-for="(item,index) in studentArr">{{index}} {{item.name}} {{item.age}}</li>
</ul>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
studentArr:[
{name:"齐威龙",age:18},
{name:"郑爽着呢",age:20},
],
},
});
</script>
</html>
v-model
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<input type="text" v-model="msg">
<h3>{{msg}}</h3>
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
msg:"齐威龙"
},
});
</script>
</html>
总结:
v-text:
输出文本
v-html:
输出标签
v-on:
事件
点击事件
v-on:click或@click
回车事件
@keyup.enter
v-show和v-if比较:
v-show:
将元素显示或隐藏(不删除元素,操作css,display)
v-show是在任何条件下都被编译,而且DOM元素保留
有更高的初始渲染消耗
适用于频繁切换
v-if:
将元素显示或隐藏(隐藏时删除整个dom元素)
v-if是惰性的,如果初始条件为假,则什么也不做
有更高的切换消耗
适用于不频繁切换
v-for:
遍历集合
<li v-for="(item,index) in arr">{{index}} {{item}}</li>
v-model:
获取和设置表单元素的值(双向数据绑定)
v-bind:
设置元素的属性
v-bind:属性名 与 :属性名 效果一样
练习demo
计数器
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<input type="button" v-on:click="reduce" value="-">
{{num}}
<input type="button" v-on:click="add" value="+">
</div>
</body>
<script>
var app = new Vue({
el:"#app",
data:{
num:0
},
methods:{
reduce:function(){
if(this.num==0){
alert("已达到最小值");
return;
}
this.num -= 1;
},
add:function(){
if(this.num==10){
alert("已达到最大值");
return;
}
this.num += 1;
}
}
});
</script>
</html>
简单记事本功能(没有写css,只是熟练vue基础)
<!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, initial-scale=1.0">
<title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<input type="text" placeholder="请输入任务,按Enter记录" @keyup.enter="addTask" v-model="inputValue">
<ol>
<li v-for="(item,index) in taskArr">{{item}} <button @click="delTask(index)">X</button></li>
</ol>
<div v-show="taskArr.length!=0">
<span>共计<label>{{taskArr.length}}</label>项</span>
<button @click="clearAll()">清空所有</button>
</div>
</div>
</body>
<script>
var app = new Vue({
el: "#app",
data: {
inputValue: "",
taskArr: [],
},
methods: {
addTask: function () {
this.taskArr.push(this.inputValue);
this.inputValue = "";
},
delTask: function(index){
this.taskArr.splice(index,1);//删除第index个,共删除1个参数
},
clearAll: function(){
this.taskArr = [];
}
}
});
</script>
</html>