vue-cli 引入axios
vue-cli 引入axios及跨域使用
使用 cnpm 安装 axios
cnpm install axios --save-dev
安装其他插件的时候,可以直接在 main.js 中引入并 Vue.use(),但是 axios 并不能 use,只能每个需要发送请求的组件中即时引入
为了解决这个问题,有两种开发思路,一是在引入 axios 之后,修改原型链,二是结合 Vuex,封装一个 aciton。这里只说修改原型链的方式
改写原型链
首先在 main.js 中引入 axios
import axios from 'axios'
这时候如果在其它的组件中,是无法使用 axios 命令的。所以我们将 axios 改写为 Vue 的原型属性
Vue.prototype.$http= axios
在 main.js 中添加了这两行代码之后,就能直接在组件的 methods 中使用 $http命令
例如
methods: {
show() {
this.$http({
method: 'get',
url: '/user',
data: {
name: 'virus'
}
})
}
配置 axios
实际上只有 url 是必须的,完整的 api 可以参考https://www.kancloud.cn/yunye/axios/234845
- 对于get请求
axios.get('/user', {
params:{
name:"virus"
}
})
- 对于post请求
axios.post('/user',{
name:"virus"
})
3、 一次性并发多个请求
function getUserAccount(){
return axios.get('/user/12345');
}
function getUserPermissions(){
return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(),getUserPermissions()])
.then(axios.spread(function(acct,perms){
//当这两个请求都完成的时候会触发这个函数,两个参数分别代表返回的结果
}))
4.axios可以通过配置(config)来发送请求
//发送一个`POST`请求
axios({
method:"POST",
url:'/user/1111',
data:{
name:"virus"
}
});
完整的请求还应当包括 .then 和 .catch
.then(function(res){
console.log(res)
})
.catch(function(err){
console.log(err)
})
当请求成功时,会执行 .then,否则执行 .catch
这两个回调函数都有各自独立的作用域,如果直接在里面访问 this,无法访问到 Vue 实例,这时只要添加一个 .bind(this) 就能解决这个问题
.then(function(res){
console.log(this.data)
}.bind(this))
请求方式的别名,这里对所有已经支持的请求方式都提供了方便的别名
axios.request(config);
axios.get(url[,config]);
axios.delete(url[,config]);
axios.head(url[,config]);
axios.post(url[,data[,config]]);
axios.put(url[,data[,config]])
axios.patch(url[,data[,config]])
另外,补充
vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一到门槛,会报错XMLHTTPRequest can not load http://40.00.100.100:3002/. Response to preflight request doesn’t pass access control…. 为什么跨域同源非同源自己去查吧,在webpack配置一下proxyTable就OK了,如下 config/index.js
dev: {
加入以下
proxyTable: {
'/api': {
target: 'http://40.00.100.100:3002/',//设置你调用的接口域名和端口号 别忘了加http
changeOrigin: true,
pathRewrite: {
'^/api': '/'
//这里理解成用‘/api’代替target里面的地址,
后面组件中我们掉接口时直接用api代替 比如我要调
用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
}
}
},
小礼物走一走,来简书关注我
DIY 一个自己的音乐播放器 - 前端 - 掘金前言:在最近的一个外包项目中包联盟(PC端)中使用到了video,遇到了好多坑。突发奇想来踩一踩audio的坑😀,果然一入深似海,👇下面将分享我的DIY之路-Vue音乐播放器。注:本项目为开源项目,不能用于商业应用,仅供学习。...
掘金官方使用 cnpm 安装 axios 安装其他插件的时候,可以直接在 main.js 中引入并 Vue.use(),但是 axios 并不能 use,只能每个需要发送请求的组件中即时引入为了解决这个问题,有两种开发思路,一是在引入 axios 之后,修改原型链,二是结合 Vue...
我就是心虚javascript 正则表达式总结 - 前端 - 掘金为什么要使用正则表达式 正则表达式通过由普通字符和特殊字符组成的文字模板完成对字符串的校验,搜索,替换。在javascript中类似这样 ... 平时自己项目中用到的 CSS - 掘金css有些属性容易忘记,半天不写就...
掘金官方低仿饿了么 H5 - 纯前端 Vue 版 + 手把手教学 - 前端 - 掘金低仿饿了么H5-纯前端Vue版+手把手教学 这是一个低仿饿了么H5的纯前端练手,数据是伪造的,写的比较粗糙,写这个的目的是为了加深一下熟练度,半年前看到别人写的仿cnodejs网站,我也用vue1仿...
掘金官方玩转 NPM - 前端 - 掘金自从转向了Node开发之后,对于NPM的熟悉程度越来越高,这一篇文章希望可以让大家都能“玩转NPM”。 做为Node世界里的包管理器,我想大家从Grunt时代起就已经熟练的使用npm install命令来安装一些依赖完成前端自动化构建任务。但...
掘金官方很喜欢剽悍晨读的这句slogan:每天进步一点点,坚持带来大改变。 期待遇见更好地自己~~加油~~~ 听了今天的晨读素材分享的书《超级时间整理术:每天多出一小时》,受益还挺多的。 里面的三点:抓住时间小偷、破除“立即行动”和增添任务乐趣。都对此刻的自己正实用。 抓住时间小偷...
好姑凉一米阳光今天是女儿践行时间管理的第84天 昨天在回家的路上,圆圆兴奋地告诉我,她今天的数学大测验,一共考了105分,得了第三名。她还兴奋地告诉我,她真实地感觉到她的生命被开启了。 我问她到底发生了什么事情,她是如何做到的。圆圆告诉我,她说今天数学测验的时候,其实题目还是很难,但是她...
九米阳光_sunny父母的爱是无私的,他们把所有的爱都倾注于你。当你发烧生病时,他们会着急心疼;当你难过的时候,他们会想尽办法来安慰你;当你取得成功到时候,他们会以你感到骄傲。父母就是这样,对你的爱永远都无法改变。 我出生在河南商丘,从小家境贫困,也只有四面墙壁遮风挡雨。我爸经常对我说:君子之...
夫学须静才须学在职场生活中,除了考取公务员以外,大部分的时候,我们都有面临被辞退的危险。公务员是没人辞退的,除了退休,或者自己辞职外,剩下的就是违法乱纪进牢笼了。 在这社会上,每个人都有属于自己的价值,人与人之间充满了各种算计。你可以厌恶它,但你不能不正视它。说难听点,如果你毫无可利用的...
少年似风原来我这么喜欢他,不是简单的欣赏,不是简单的好感,而是很喜欢很喜欢。 我知道自己一直对一个人有好感,他是我好朋友,我也一直和自己说,这种好感只是暂时的,是朋友之间的好感,不是喜欢。但随着自己一次次尝试说服自己,内心却越来越笃定,自己真的喜欢上他了。他是我同学,以前在学校的时...
秋小桐