Vue的axios快速上手
一 axios的简介说明
它是Vue的一个通信框架,Vue本身有vue-resource,但是作者感觉是在重复造轮子,就弃用了deprecated自己的vue-resource,转而拥抱采用adapted第三方的axios.
二 axios的特性
支持数据转换,前端和后端的数据自动转换,自动转换请求的数据和响应的数据;
支持链式编程,类似Java8的Stream流式编程;
更多特性可查看:https://www.npmjs.com/package/axios介绍的关于Feature章节部分,作为学习新手,先了解个概貌,继续往前走,等二刷三刷的时候再深入知识点儿。
- Make XMLHttpRequests from the browser
- Make http requests from node.js
- Supports the Promise API
- Intercept request and response
- Transform request and response data
- Cancel requests
- Automatic transforms for JSON data
- Client side support for protecting against XSRF
三 编写一个axios的例子程序
1准备json文件data.json
{
"name":"Google",
"url":"http://google.com",
"links":[
{
"name":"163",
"url": "http://www.163.com"
},
{
"name":"数据库敲门人",
"url":"http://knockatdatabase.com"
}
]
}2 编写HTML文件,引入Vue.js和axios.js
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>axios通信</title>
<!-- 引入Vue.js和axios文件 -->
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
</body>
</html>3 ViewModel里定义一个函数,指定返回值为info
然后,在div里,让其引用info这个返回的对象的属性,info.url和info.name。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>axios通信</title>
<!-- 引入Vue.js和axios文件 -->
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<div >
name:{{info.name}}
</div>
<div >
url:{{info.url}}
</div>
</div>
<script type="text/javascript">
let app= new Vue({
el:"#app",
data(){
return{
info:{
name:'',
url:'',
}
}
}
})
</script>
</body>
</html>4 开始写axios
注意,这里的mounted,是Vue实例的生命周期的一部分。其写在这里的原因,类似于之前的jQuery的$function的用法。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>axios通信</title>
<!-- 引入Vue.js和axios文件 -->
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<div >
name:{{info.name}}
</div>
<div >
url:{{info.url}}
</div>
</div>
<script type="text/javascript">
let app= new Vue({
el:"#app",
data(){
return{
info:{
name:'',
url:'',
}
}
},
// 这里的mounted类似于jQuery的$function的用法,当然,jQuery我还没用过。
mounted() {
// 然后,开始写axios读取json数据文件,读取之后,then,这就类似于lambda表达式,
// 接下来,它的响应的对象this.info被赋值为response.data,
// 这里的this.$data.info可以直接简写成this.info=response.data
axios.get('data.json').then(response=>(this.$data.info=response.data))
}
})
</script>
</body>
</html>至此,一个简单的axios demo程序就写好了。我们在browser里可以看到效果。
5 axios返回从json中读取的数组
无非就是另外添加一个div,使用ul,然后使用v-for,即Vue的列表渲染。
需要注意的是,v-for里要写link/item in info.links。其中的links是axios从json文件里读取的数据,前面要带个info对象作为前缀。
6 给返回的URL加上a标签
最终的代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>axios通信</title>
<!-- 引入Vue.js和axios文件 -->
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
<div >
name:{{info.name}}
</div>
<div >
url: <a v-bind:href="info.url" target="_blank">{{info.url}}</a>
</div>
<!-- 无非就是另外添加一个div,使用ul,然后使用v-for,即Vue的列表渲染。
需要注意的是,v-for里要写link/item in info.links。其中的links是axios从json文件里读取的数据,前面要带个info对象作为前缀。
-->
<div >
<li v-for="link in info.links" v-bind:key="link.name">
{{link.name}} --- <a v-bind:href="link.url" target="_blank">{{link.url}}</a>
</li>
</div>
</div>
<script type="text/javascript">
let app= new Vue({
el:"#app",
data(){
return{
info:{
name:'',
url:'',
}
}
},
// 这里的mounted类似于jQuery的$function的用法,当然,jQuery我还没用过。
mounted() {
// 然后,开始写axios读取json数据文件,读取之后,then,这就类似于lambda表达式,
// 接下来,它的响应的对象this.info被赋值为response.data,
// 这里的this.$data.info可以直接简写成this.info=response.data
axios.get('data.json').then(response=>(this.$data.info=response.data))
}
})
</script>
</body>
</html>四小结
对Vue的使用目前还处于上手接触阶段,暂时没有更多个人的对于Vue的理解和想法。我想,随着我主键的对Vue越来越熟悉,经验慢慢丰富,理解更深。我就能写出、表达出我个人的理解和想法。