axios+vue
网络应用 Vue结合网络数据开发应用 axios+vue
他与本地应用的不同点是 data中的数据有一部分是从网络中获取到的
axios(网络请求库) 内部就是ajax 但是通过封装后用起来更加便捷
axios是一个功能强大的网络请求库 js库
作为js库 首先我们需要导包 确保在有网的状态下
在引入后 他会在页面上注册一个全局的axios对象 来发送请求
axios.get(提供的接口地址?查询字符串key=value&key2=values).then(function(response){},function(err){})
axios.post(提供的接口地址,{查询字符串key:value,key2:values}).then(function(response){},function(err){})
前者用来接收数据 err是错误 里面的参数response和err都可以获取到
axios里面的this会变 但在axios外部可以获取到vue的this
我们就可以将this赋值给that var that = this
ajax和axios的优缺点对比
ajax:
本身是针对MVC的编程,不符合现在前端MVVM的浪潮
基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案
JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务
axios:
从 node.js 创建 http 请求
支持 Promise API
客户端支持防止CSRF
提供了一些并发请求的接口(重要,方便了很多的操作)
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>axios+vue基本使用</title>
</head>
<body>
<div id="app">
<input type="button" value="获取笑话" @click="getJoke">
<p> {{ joke }}</p>
</div>
<input type="button" value="get请求" class="get">
<input type="button" value="post请求" class="post">
<!-- 官网提供的 axios 在线地址 -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="js/vue.js"></script>
<script>
/*
接口:随机获取一条笑话
请求地址:https://autumnfish.cn/api/joke
请求方法:get
请求参数:无
响应内容:随机笑话
*/
var app = new Vue({
el: "#app",
data: {
joke: "很好笑的笑话"
},
methods: {
getJoke: function() {
// console.log(this.joke);
var that = this;
axios.get("https://autumnfish.cn/api/joke").then(function(response) {
// console.log(response)
console.log(response.data);
// console.log(this.joke);
that.joke = response.data;
}, function(err) {})
},
},
})
/*
接口1:随机笑话
请求地址:https://autumnfish.cn/api/joke/list
请求方法:get
请求参数:num(笑话条数,数字)
响应内容:随机笑话
*/
document.querySelector(".get").onclick = function() {
axios.get("https://autumnfish.cn/api/joke/list?num=6")
// axios.get("https://autumnfish.cn/api/joke/list1234?num=6")
.then(function(response) {
console.log(response);
}, function(err) {
console.log(err);
})
}
/*
接口2:用户注册
请求地址:https://autumnfish.cn/api/user/reg
请求方法:post
请求参数:username(用户名,字符串)
响应内容:注册成功或失败
*/
document.querySelector(".post").onclick = function() {
axios.post("https://autumnfish.cn/api/user/reg", {
username: "盐焗西兰花"
})
.then(function(response) {
console.log(response);
console.log(this.skill);
}, function(err) {
console.log(err);
})
}
</script>
</body>
</html>
本文来自博客园,作者:没有烦恼的猫猫,转载请注明原文链接:https://www.cnblogs.com/maomao777/p/16017799.html

浙公网安备 33010602011771号