一、VUE基本语法
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
1、安装vue
方式一:直接使用script标签引入
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
方式二: npm安装
在用 Vue 构建大型应用时,推荐使用 NPM 安装:npm install v
2、vue的指令 和 插值
{{ value}}:插值表达式
v-text:填充纯文本内容
v-html:填充html
v-pre:填充原始数据
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p>{{age}}</p>
<div v-text="msg">123</div>
<div v-html="desc"></div>
<div v-pre>{{desc}}</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
msg:"hello qiangqiang",
age:18,
desc:'<h1>guaniu<\h1>'
}
})
</script>
</body>
</html>
页面:
3、属性绑定
属性绑定:使用v-bind:属性 也可以简写为 :属性
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- <a v-bind:href="url">{{name}}</a> -->
<!-- 属性绑定:使用v-bind:属性 也可以简写为 :属性 -->
<a :href="url">{{name}}</a>
</div>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
name:"百度",
url:"http://www.baidu.com",
}
})
</script>
</body>
</html>
页面:
4、通过:style,绑定CSS样式
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id='app' :style="boxStyle">
box and python
</div>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
// 通过style绑定css样式
boxStyle: {
color: "red",
fontSize: "30px"
}
}
})
</script>
</body>
</html>
页面:
5、通过:class,绑定CSS样式
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<style type="text/css">
.box1 {
width: 200px;
height: 200px;
background: #00AAFF;
}
</style>
</head>
<body>
<div id='app'>
<!-- 数组形式绑定class -->
<div :class="[boxCls]">
box11111 and python
</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data: {
boxCls: 'box1'
}
})
</script>
</body>
</html>
页面:
6、事件绑定
v-on:为元素绑定一个事件,绑定点击事件:
v-on:click = '指定执行的方法'
v-on:可以简写为 @:@click
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<style type="text/css">
.box1 {
width: 200px;
height: 200px;
background: #00AAFF;
}
.bj {
width: 200px;
height: 200px;
background: #FF0000;
border: solid 2px #000000;
}
</style>
</head>
<body>
<div id='app'>
<!-- 对象形式绑定class -->
<div :class="{box1:isbox1,bj:isbj}">
box11111 and python
</div>
<input type="button" value="更改样式按钮" @click="changeStyle()"/>
</div>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data: {
isbox1:true,
isbj:false
},
methods:{
changeStyle(){
this.isbox1=!this.isbox1
this.isbj=!this.isbj
}
}
})
</script>
</body>
</html>
页面:
7、vue的双向数据绑定
v-model:页面修改数据会变,数据改变,页面也会改
事件监听
view -----> vm ------>model
数据绑定
view <----- vm <------model
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div v-text="msg">123</div>
<div>
<input type="text" v-model="msg">
</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
msg:"hello 瓜牛"
}
})
</script>
</body>
</html>
页面:
8、分支语句
通过条件来控制元素是否渲染到页面
v-if(v-else-if):判断条件成立时显示
v-else: 条件不成立时显示
v-show:控制元素是否显示到页面(本质就是display属性的控制)
示例( v-if,v-else-if,v-else):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h1 v-if='result=="success"' style="color: #55AA7F;">
用例id:{{caseId}}
名称:{{caseName}}
结果:{{result}}
</h1>
<h1 v-else-if='result=="error"' style="color: #ffaa00;">
用例id:{{caseId}}
名称:{{caseName}}
结果:{{result}}
</h1>
<h1 v-else='result=="fail"' style="color: #ff0000;">
用例id:{{caseId}}
名称:{{caseName}}
结果:{{result}}
</h1>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data: {
caseId: "case1",
caseName: "用例名称",
result: 'fail'
}
})
</script>
</body>
</html>
页面:
示例(v-show):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.box {
width: 600px;
height: 400px;
margin: 200px auto;
box-shadow: 0 0 5px #00AAFF;
background: #d3d2ce;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 通过 v-show控制元素的显示和隐藏,本质上是通display去实现的-->
<div class="box" v-show="show"></div>
<button type="button" @click="show=!show">按钮1</button>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data:{
show:false
}
})
</script>
</body>
</html>
页面:
9、遍历语句
v-for:遍历数组
{{name}}
v-for:遍历对象
{{key}}{{value}}
示例(遍历数组):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 使用v-for时,最好给元素添加一个key属性(key属性的值要是唯一的),方便vue去跟踪和维护这个节点中的数据 -->
<h1 style="color: #55AA7F;" v-for="(item,index) in cases " :key='index'>
遍历出来的数据值:{{item}}------数据的索引:{{index}}
</h1>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{cases: [
{caseId: "case1",
caseName: "用例名称",
result: 'fail'},
{caseId: "case1",
caseName: "用例名称",
result: 'fail'},
{caseId: "case1",
caseName: "用例名称",
result: 'fail'}
]}
})
</script>
</body>
</html>
页面:
示例(遍历对象):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h1 style="color: #55AA7F;" v-for="(value,key) in cases " >
遍历出来的数据值:{{value}}------数据key:{{key}}
</h1>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{cases:{case:123,
title:"haha",
res:"fail"}}
})
</script>
</body>
</html>
页面:
10、v-for和v-if结合使用
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h1 style="color: #55AA7F;" v-for="(item,index) in cases " :key='index'>
<!-- 遍历出来的数据值:{{item}}------数据的索引:{{index}} -->
<span v-if="item.result=='success'" style="color: #55ff7f;">{{item}}</span>
<span v-else-if="item.result=='fail'" style="color: #ff5500;">{{item}}</span>
<span v-else-if="item.result=='error'" style="color: #ffaa00;">{{item}}</span>
<span v-else style="color: #000000;">{{item}}</span>
</h1>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data: {
cases: [{
case_id: 1,
title: "用例001",
result: "success"
},
{
case_id: 1,
title: "用例002",
result: "error"
},
{
case_id: 1,
title: "用例003",
result: "fail"
},
{
case_id: 1,
title: "用例003",
result: "aa"
}
]
}
})
</script>
</body>
</html>
页面:
未完待续,点个关注,持续更新。。。