测开之Vue・《Vue高级特性》
Posted 七月的小尾巴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测开之Vue・《Vue高级特性》相关的知识,希望对你有一定的参考价值。
Vue基本语法
初始Vue
Vue 是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类结合使用时,Vue也完全能够为复杂的单页应用提供驱动。
安装vue
- 方式一,直接在
<head>
标签中引入
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
- 方式二:npm安装
在用Vue构建大型应用时,推荐使用NPM安装
npm install vue
Vue的指令和插值
-
{{value}} : 插值表达式
-
v-text:填充纯文本内容
-
v-html:填充html
-
v-pre:填充原始数据
下面我们来通过这些插值表达式,编写一段html的基础代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
</head>
<body>
<div id="app">
<!--方式1:通过插值表达式{{}}-->
<h3>姓名:{{name}}</h3>
<!--方式2: 通过v-text指令-->
<h3 v-text="info"></h3>
<!--方式3,通过v-html-->
<h3 v-html="info"></h3>
<!-- 方式4: v-pre-->
<!-- 当我们只想要展示{{name}},但是如果直接输入,数据会被解析直接展示了name对应的属性值,这个时候我们使用v-pre-->
<div v-pre>{{name}}</div>
</div>
<script type="text/javascript">
var vm = new Vue({
// 根据vue实例绑定的根节点
el: '#app',
data:{
name: "余少琪",
age: 18,
info: "<h1>info</h1>"
}
})
</script>
</body>
</html>
属性绑定
属性绑定:使用v-bind:属性 也可以简写为 :属性
<a v-bind:href="dynamicId"></a>
简写:<a :href="dynamicId"></a>
下面编写一个简单的页面
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src='vue.js'></script>
</head>
<body>
<div id="app">
<!-- 通过v-bind属性,指定跳转地址 ,可简写: -->
<a v-bind:href="url1.url">{{url.title}}</a>
<!-- 下面是简写方式,与上方效果一致 -->
<a :href="">{{ur2.title}}</a>
<!-- <a :href="url3[0]">{{url3[1}}</a>-->
<a :href="">111</a>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data:{
url1:{
url: "http:www.baidu.com",
title: "百度1"
},
url2: {
url: "http:www.baidu.com",
title: "百度2"
},
url3:{
url: "http:www.baidu.com",
title: "百度3"
}
}
})
</script>
</body>
</html>
事件绑定
- v-on: 为元素绑定了一个时间,绑定点击事件
v-on:click:"指定执行的方法"
v-on:可以简写为@:@click
如果事件直接绑定函数的名称,默认会把时间对象作为函数的第一个参数传递
sub:function(event){
console.log(event.target)
this.number--
}
如果时间绑定函数,传递调用,时间可以通过$event来传递(最后一个参数)
add:function(p,event){
console.log(event)
console.log(p)
this.number++
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src='vue.js'></script>
</head>
<body>
<div id="app">
<h3>{{n1}}</h3>
<h3>{{n2}}</h3>
<!-- v-on:给元素定义点击事件,可简写@click方法 -->
<button type="button" v-on:click="add">+</button>
<button type="button" @click="sub()">-</button>
<h3>结果:{{res}}</h3>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{
n1: 11,
n2: 22,
res: null
},
// methond中用来定义vue实例中的方法
methods:{
// 把 data中的n1 和 n2中的数据相加
add(){
this.res = this.n1 + this.n2
},
sub(){
this.res = this.n1 - this.n2
}
}
})
</script>
</body>
</html>
vue的双向数据绑定
- v-model:页面修改数据会变,数据改变,页面也会改
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src='vue.js'></script>
</head>
<body>
<div id="app">
<!--
数据双向绑定:v-model
表单修饰符:
number:会自动把输入的内容转换成字符
trim: 自动去除首尾空格
lazy:等到内容输入完毕之后在触发change事件(获取数据)
-->
<input type="text" v-model.trim.="user"><br>
<input type="text" v-model.number, v-model.trim="n1"><br>
<input type="text" v-model.number='n2'><br>
<!-- v-on:给元素定义点击事件,可简写@click方法 -->
<button type="button" v-on:click="add">+</button>
<button type="button" @click="sub()">-</button>
<h3>结果:{{res}}</h3>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{
n1: 11,
n2: 22,
user: yushaoqi,
res: null
},
// methond中用来定义vue实例中的方法
methods:{
// 把 data中的n1 和 n2中的数据相加
add(){
this.res = this.n1 + this.n2
},
sub(){
this.res = this.n1 - this.n2
}
}})
</script>
</body>
</html>
分支语句
- v-if:判断条件成立时显示
- v-else: 条件不成立时显示
- v-show:控制元素是否显示到页面(本质就是display属性的控制)
下面是实现案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src='vue.js'></script>
</head>
<body>
<div id="app">
<!-- 根据条件来渲染显示页面的元素-->
<!-- 判断当返回结果为success为成功的话,显示绿色-->
<h1 v-if="testcase.result == 'success'" style="color: #00AA00;">{{testcase}}</h1>
<h1 v-else-if="testcase.result == 'error'" style="color: brown">{{testcase}}</h1>
<h1 v-else-if="testcase.result == 'fail'" style="color: yellow">{{testcase}}</h1>
<h1 v-else="">数据状态有误</h1>
<!-- 当值为ture时,元素会显示,fasle时会隐藏 -->
<h1 v-show="status">python</h1>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{
testcase:{
id: 1,
title: "用例001",
result: "error"
},
status: false
}
})
</script>
</body>
</html>
遍历语句
- v-for:遍历数组
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src='vue.js'></script>
</head>
<body>
<div id="app">
<table border="" cellpadding="" cellspacing="">
<tr>
<th>ID</th>
<th>用例名称</th>
<th>测试人员</th>
<th>项目ID</th>
<th>项目名称</th>
<th>描述</th>
<th>创建时间</th>
<th>测试用例</th>
</tr>
<tr v-for="item in lists">
<td v-for="value, key in item">{{value}}</td>
<!-- <td>{{item.id}}</td>-->
<!-- <td>{{item.name}}</td>-->
<!-- <td>{{item.taster}}</td>-->
<!-- <td>{{item.project_id}}</td>-->
<!-- <td>{{item.project}}</td>-->
<!-- <td>{{item.desc}}</td>-->
<!-- <td>{{item.creat_time}}</td>-->
<!-- <td>{{item.testcase}}</td>-->
</tr>
</table>
</div>
<script type="text/javascript">
var vm = new Vue({
el: "#app",
data:{
lists: [{
id: 1,
name: "用例001",
taster: "可悠",
project_id: 1,
project: "aaa",
desc: "登录接口",
creat_time: "2019-08-27 00:00:00",
testcase: 9
},
{
id: 2,
name: "用例002",
taster: "可悠",
project_id: 1,
project: "AAA",
desc: "登录接口",
creat_time: "2019-08-27 00:00:00",
testcase: 9
},
{
id: 3,
name: "用例003",
taster: "可悠",
project_id: 1,
project: "婚BB",
desc: "登录接口",
creat_time: "2019-08-27 00:00:00",
testcase: 9
测开之・《使用vue-cli(vue脚手架)快速搭建项目》