Vue 开发入门
起步
版本
Vue2
1 | <!-- 开发环境版本,包含了有帮助的命令行警告 --> |
Vue3
1 | <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> |
语法
- el:
- data:
指令
- v-text:内容(文本)绑定
- v-html:内容(html)绑定
- v-on:事件绑定,可以用 @ 表示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45<html>
<head>
<meta charset="UTF-8">
<title>Demo</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p v-html="H2"></p>
<button v-on:click="sub">-</button>
<span> {{num}} </span>
<button @click="add">+</button>
<br>
<button v-on:click="sub">-</button>
<span v-text="num"></span>
<button @click="add">+</button>
</div>
<script>
var app = new Vue({
el:"#app",
data: {
num:0,
H2:"<h2>Demo</h2>"
},
methods: {
sub:function(){
if(this.num>0){
this.num--;
}else{
alert("已经清零了");
}
},
add:function(){
if(this.num<10){
this.num++;
}else{
alert("加不上去啦");
}
}
},
})
</script>
</body>
</html> - v-show:根据布尔值真假来设置显示或隐藏(重排)
- v-if:根据布尔值真假来添加或移除 DOM(重绘)
- v-bind:设置元素的熟悉,v-bind:属性名,可以用 : 表示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46<html>
<head>
<meta charset="UTF-8">
<title>Demo</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<img :src="imgs[index]">
<br>
<a href="javascript:void(0)" @click="prev" v-show="index!=0">上一张</a>
<a href="javascript:void(0)" @click="next" v-show="index<imgs.length-1">下一张</a>
</div>
<script>
var app = new Vue({
el:"#app",
data: {
imgs:[
"https://tvax1.sinaimg.cn/mw690/91e9ebb3ly1h8sxxkbiy2j218g18e7ca.jpg",
"https://tva1.sinaimg.cn/mw690/91e9ebb3ly1h8sxxkh8htj218g18gwqy.jpg",
"https://tva2.sinaimg.cn/mw690/91e9ebb3ly1h8sxxkm1ghj218g18e47c.jpg",
"https://tvax1.sinaimg.cn/mw690/91e9ebb3ly1h8sxxkqc8tj218g11adob.jpg",
"https://tvax4.sinaimg.cn/mw690/91e9ebb3ly1h8sxxkx6ufj218g18en7d.jpg",
"https://tva4.sinaimg.cn/mw690/91e9ebb3ly1h8sxxl1ylqj218g18eqb1.jpg",
"https://tva2.sinaimg.cn/mw690/91e9ebb3ly1h8sxxl6yk2j218g18ek2w.jpg",
"https://tva3.sinaimg.cn/mw690/91e9ebb3ly1h8sxxllt4hj218g15wwmr.jpg",
"https://tva1.sinaimg.cn/mw690/91e9ebb3ly1h8sxxlqbo5j218g18e46q.jpg",
"https://tva2.sinaimg.cn/mw690/91e9ebb3ly1h8sxxluxi4j218g18ewui.jpg",
"https://tvax1.sinaimg.cn/mw690/91e9ebb3ly1h8sxxm308rj218g13yk6p.jpg",
"https://tva2.sinaimg.cn/mw690/91e9ebb3ly1h8sxxm99ytj218g18edvy.jpg"
],
index:0
},
methods: {
prev:function(){
this.index--;
},
next:function(){
this.index++;
}
},
})
</script>
</body>
</html> - v-for:根据数据生成列表结构,常用于遍历
- v-on 扩展:传递自定义参数,事件修饰符
- v-model:获取和设置表单元素的值(双向数据绑定)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42<html>
<head>
<meta charset="UTF-8">
<title>Demo</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input v-model="inputValue" @keyup.enter="add">
<ul>
<li v-for="(item,index) in txts">
<span>{{index+1}}.</span>{{item}}<button @click="del(index)">删除</button>
</li>
</ul>
<span v-if="txts.length!=0">共 {{txts.length}} 个代办</span> <button v-show="txts.length!=0" @click="clear">清空</button>
</div>
<script>
var app = new Vue({
el:"#app",
data: {
txts:[
"好好学习",
"天天向上"
],
inputValue:"输入任务"
},
methods: {
add:function(){
this.txts.push(this.inputValue);
},
del:function(index){
this.txts.splice(index,1);
},
clear:function(){
this.txts = [];
}
},
})
</script>
</body>
</html>应用
axios
axios 是一个基于 promise 功能强大的 HTTP 网络请求库,作用于 Node.js 和浏览器中,它是 isomorphic 的(即同一套代码可以运行在浏览器和 Node.js中)。在服务端它使用原生 Node.js http 模块, 而在客户端 (浏览端) 则使用XMLHttpRequest特性
- 从浏览器创建 XMLHttpRequests
- 从 node.js 创建 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换 JSON 数据
- 客户端支持防御 XSRF
1
2
3
4<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
axios.get(地址?key1=value1&key2=value2).then(function(response){},function(err){})
axios.post(地址,{key1:value1,key2:value2}).then(function(response){},function(err){})
查询字符串:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 君玉自牧!