1、axios 是个啥?

直白点说,比如在开发前端应用程序的过程中需要用到的一些文字、图片等资源,ta门一般会被提前放到服务器上,这样的话就要向服务器发送网络请求获取这些资源,然后才能在应用程序上对其进行效果展示,axios 就是这样一个网络请求的第三方框架。

附上axios 中文官网 。

2、为啥选 axios ?

在 Vue 的开发过程中能实现发送网络请求的方式有很多种,下面详细看一下每种方式和选 axios 的原因:

1、传统的 Ajax 是基于 XMLHttpRequest(XHR)

因为在项目开发中封装它的过程比较麻烦,配置和调用方式也比较混乱,一般开发不会用这种方式,而是用 jQuery-Ajax 。

2、jQuery-Ajax,相对于传统的 Ajax 非常好用

jQuery-Ajax 相对于传统的Ajax来说就比较好用了,但是在 Vue 的开发过程中不需要使用 jQuery ,而且jQuery是个比较重量级的框架,没有必要为了方便进行一个网络请求,特意引入一个 jQuery。这是 jQuery-Ajax 的 传送门

3、Vue官方曾推出过 Vue-resource 插件

Vue-resource 的体积相对于 jQuery 小很多。但是到目前来Vue 2.0 版本推出之后,尤小右同学 说以后不再对 Vue-resource 进行维护和更新了,所以说继续用这种方式开发项目会有很大隐患哦。

4、尤小右同学 在说明不再继续更新和维护 Vue-resource 的同时,还推荐了一个框架 axios 。

axios 有非常多的优点并且用起来也非常方便,它支持在浏览器中发送 XMLHttpRequests 请求,支持在node.js中发送 http 请求,支持 Promise API,可以拦截请求和响应,可以转换请求和响应数据。(反正就是很牛逼,还不赶紧用你是在寻思啥呢?)

3、axios 的基本使用

3.1、先说一下怎么安装和引入:

npm install axios --save    //项目中安装import axios from 'axios'    //使用前引入

3.2、axios 有很多请求方式,具体可以看一下官网的API,下面说一下最基本的使用方式:

axios({url:'http://127.0.0.1:8000/home/login',  //这里写你要发请求的服务器urlmethod:'get'        //(默认是get请求)
}).then(res => {console.log(res);    //在控制台查看请求的数据
})axios({        url:'http://127.0.0.1:8000/home/register',  //这里写你要发请求的服务器urlparams:{      //专门针对get请求的参数拼接,如果是post请求用 data:{}type:'',page:}
}).then(res => {console.log(res);    //在控制台查看请求的数据
})

3.3、axios 发送并发请求:axios.all 方法可以放入多个请求的数组,它返回的也是一个数组,可以用 axios.spread 将数组展开

axios.all([axios({url:'http://127.0.0.1:8000/home/login'        //第一条请求的url
}),axios({url:'http://127.0.0.1:8000/home/register',       //第二条请求的urlparams:{      //专门针对get请求的参数拼接,如果是post请求用 data:{}type:'',page:}
})]).then(results => {    //两条请求都拿到之后再做下一步操作console.log(results);console.log(results[0]);console.log(results[1]);
})axios.all([axios({url:'http://127.0.0.1:8000/home/login'        //第一条请求的url
}),axios({url:'http://127.0.0.1:8000/home/register',       //第二条请求的urlparams:{      //专门针对get请求的参数拼接,如果是post请求用 data:{}type:'',page:}
})]).then(axios.spread((res1,res2) => {    //用 axios.spread 将数组展开console.log(res1);console.log(res2);
}))

4、axios 相关配置

4.1、如果发送多个请求的话,每个请求的 url 前缀,超时时间等设置都是一样的,这样可以将重复的信息进行抽取:

//比如发送的第一个请求的 url 是:http://127.0.0.1:8000/home/login
//比如发送的第一个请求的 url 是:http://127.0.0.1:8000/home/register//这样就可以对两个 url 的前缀进行抽取:http://127.0.0.1:8000//使用全局的 axios 和对应的配置进行网络请求
axios.defaults.baseURL ='http://127.0.0.1:8000'
axios.defaults.timeout = 5000    //请求超时时间也可以提取
axios.all([axios({url:'/home/login'
}),axios({url:'/home/register',params:{          //专门针对get请求的参数拼接,如果是post请求用 data:{}type:'sell',page:5}
})]).then(axios.spread((res1,res2) => {console.log(res1);console.log(res2);
}))

4.2、axios 还有一些其他的配置选项,详细可以移步 axios 官网 Config API 。

5、axios 实例

5.1、为啥要创建 axios 实例:

如果项目比较大的话,考虑到并发量比较高,一个服务器可能满足不了整个业务的需求,这个时候就可能会用到多个服务器,这样的话服务器的 url 不一样,如果还是对 url 进行全局配置 baseURL 就不合适了,针对这一问题(也就是服务器不在一个 ip 地址里 ),单独创建 axios 实例就会方便很多。创建不同的实例,每个实例都有不同的配置,可以满足业务复杂的需求。

5.2、怎么创建 axios 实例,并用 axios 实例发送请求:

const instance1 = axios.create({    //创建对应的 axios 实例baseuRL:'http://127.0.0.1:8000',timeout:5000
})instance1({            //直接用实例发送请求url:'/home/ligin'
}).then(res =>{console.log(res);
})instance1({            //直接用实例发送请求url: '/home/register',params: {        //专门针对get请求的参数拼接,如果是post请求用 data:{} data:{}type: '',page: }
}).then(res =>{console.log(res);
})const instance2 = axios.create({    //再创建一个 axios 实例baseuRL:'http://111.000.000.001:8000',timeout:10000
})
......

6、axios 模块封装

6.1、为啥要封装 axios 模块:

如果对每个需要发送网络请求的组件都引入 axios 的话,这样整个项目对 axios 的依赖性太大了,一旦 axios 崩了,或者像 Vue-resource一样被官宣不再继续维护了,那你这个项目就 mmp 了懂吧,所以就要对 axios 模块进行封装,单独搞一个文件对 axios 做一个封装,之后所有的组件在进行网络请求的时候都面向这一个文件,假如一旦有一天 axios 不再维护了,也根本不慌,只需要对 axios 封装的文件进行修改就完事了,真是个小机灵鬼。

6.2、怎么封装 axios 模块:一般新建一个 request.js 文件用来封装 axios;

import axios from 'axios'export function request(config) {//创建axios实例const instance = axios.create({baseURL:'http://127.0.0.1:8000',timeout:5000})//发送真正的网络请求return instance(config)
}

6.3、在需要发送网络请求的地方调用这个request 方法:

import request from  "./request"request({url:'/home/login'
}).then(res => {console.log(res)
}).catch(err =>{console.log(err)
})

如果有一天 axios 真崩了,只需要把 request.js 文件的代码改一下,也 return 一个结果出来就 ok 了。附上axios 中文官网 。

axios 框架的介绍和基本使用相关推荐

  1. axios框架里面如何使用get,post,通用ajax方法请求。

    回到文章总目录 本篇文章介绍的内容为axios框架里面如何使用get,post,通用ajax方法请求. axios是目前前端ajax中最热门的工具库,是vue和react官方推荐的ajax工具包 作用 ...

  2. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  3. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  4. python nose测试框架全面介绍十---用例的跳过

    又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...

  5. .Net Core应用框架Util介绍(四)

    上篇介绍了Util Angular Demo的目录结构和运行机制,本文介绍Util封装Angular的基本手法及背后的动机. Angular应用由Ts和Html两部分构成,本文介绍第一部分. Angu ...

  6. .Net Core应用框架Util介绍(三)

    上篇.Net Core应用框架Util介绍(二)介绍了Util的开发环境,并让你把Demo运行起来.本文将介绍该Demo的前端Angular运行机制以及目录结构. 目录结构 在VS上打开Util De ...

  7. .Net Core应用框架Util介绍(二)

    Util的开源地址 https://github.com/dotnetcore/util Util的开源协议 Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util ...

  8. python单元测试框架unittest介绍和使用_Python+Selenium框架设计篇之-简单介绍unittest单元测试框架...

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unittest是一 ...

  9. Spring框架Runtime介绍(导包)

    一.Spring框架Runtime介绍,如图 1.1 Test: Spring提供测试功能 1.2 Core Container:Spring核心容器,Spring启动的基本条件, 1.2.1 Bea ...

最新文章

  1. Django博客系统(首页文章数据展示)
  2. Leangoo项目管理软件管理 传统硬件产品开发全流程
  3. 特征变换(3)小波变换
  4. linux sort 时间排序,linux sort多字段排序实例解析
  5. MVC+EF三层+抽象工厂
  6. windows数据自动上传服务器,windows服务器间自动传输文件
  7. Scrum meeting报告
  8. LeetCode 1430. 判断给定的序列是否是二叉树从根到叶的路径(递归)
  9. 计算机在数据处理方面的论文,数据挖掘论文3000字范文参考(2)
  10. 我是如何利用一个只有500人的QQ通过人性的弱点来变现的
  11. python封包和解包_python解析网络封包方法
  12. 9月12日截止!2022年湖北省高新技术企业认定时间、程序、材料和相关要求
  13. linux redis 调优,关于redis状态监控和性能调优详解
  14. 《炬丰科技-半导体工艺》ZnO多晶薄膜异质结
  15. 虚拟服务器C盘备份,分享:两种快速虚拟机备份方法
  16. 设置docker容器时间
  17. 这是个404的时代 各种404的搞笑图片
  18. Handlebars.js入门教程
  19. 用 ffmpeg 压缩视频
  20. scala 中缀表达式和中置操作符

热门文章

  1. [USACO18JAN] Lifeguards S (线段树:扫描线面积)
  2. L. Lifeguards(平面几何 点平分成两边)
  3. 流程控制之if...elif...else和流程控制之while循环
  4. word中在指定位置插入图片
  5. 计算机里找不到用户文件夹,电脑里面的文件夹不见了,怎么找回
  6. 7-3 计算平均成绩(15 分)(转载)
  7. 面试公司Offer——我的Python求职之路
  8. [ArcGIS].txt或.xlxs(Excel)格式如何转为.shp格式?
  9. uniapp 上传图片
  10. 关于在工作中遇到的问题及解决方案