写了几期的黑话《互联网公司黑话大全》,有个同学问vue2.0的进阶篇算更新完了吗?

让我猛地想起进阶篇在推出预告的时候,大家都提醒前端君,vue-resource已经停止更新了,现在都推荐使用了axios了。

吓得我赶紧打开电脑,赶紧axios学习一番,并很好奇地想看看,这个在vue1.0的时候被官方推荐的 ajax 插件 vue-resource,到底经历了什么,被大家遗弃了。

vue-resource不再更新

我们来看看作者给出的解释,原话如下:

最近团队讨论了一下,Ajax 本身跟 Vue 并没有什么需要特别整合的地方,使用 fetchpolyfill 或是 axios、superagent 等等都可以起到同等的效果,vue-resource 提供的价值和其维护成本相比并不划算,所以决定在不久以后取消对 vue-resource 的官方推荐。

已有的用户可以继续使用, 但以后不再把 vue-resource 作为官方的 ajax 方案。这里可以去掉 vue-resource,文档也不必翻译了。

前端君为大家总结几个关键点:

1.  维护成本与其价值相比不划算

2.  其他插件也能满足同等开发需求

3.  你可以继续用,但不再更新

一起学习axios

既然官方都不再更新vue-resource,并推荐大家使用axios,那我们就一起来学习一下它。

同样我们需要事先安装好它,可以npm和bower安装,我们这里用最简单的cdn加载。

<script src="https://unpkg.com/axios/dist/axios.min.js">  </script>

CDN安装十分简单,接下来,我们看看它的语法,如何实现数据请求和提交。

get请求

写法如下:

axios.get('/detail?id=10').then(function (res) {
    //成功获取数据
   console.log(res);
 }).catch(function (err) {
    //请求错误
   console.log(err);
 });

使用过jquery的ajax方案的同学,学习axios应该没有任何难度。get请求也可以通过 params 对象传递参数。写法如下:

axios.get('/detail', {
    //参数
   params: {
        id: 10
    }
 }).then(function (res) {
    //成功获取数据
    console.log(res);
 }).catch(function (err) {
    //请求错误
    console.log(err);
 });

相比第一种写法,这种写法的可读性更高,在接口后增加一个对象参数,其中一个属性为params,它的值就是我们要传递的参数id:10。

post请求

写法如下:

//执行post请求
 axios.post('/add', {
    name: '前端君',
    age: 26
 }).then(function (res) {
    //请求成功
  console.log(res);
 }).catch(function (err) {
    //请求失败
  console.log(err);
 });

多个请求并发

除了最常用的get请求和post请求以外,值得一提的是axios提供了一次性并发多个请求的API,使用方法如下:

function getProfile(){
    //请求1
    return axios.get('/profile');
 }
 function getUser(){
    //请求2
    return axios.get('/user');
 }

//并发请求
 axios.all([
    getProfile(),
    getUser()
 ]).then(axios.spread((res1, res2)=>{
    //两个请求现已完成
   console.log(res1);
    console.log(res2);
 }));

我们事先定义了两个方法  getProfile()  和  getUser()  帮我们实现get请求。

在某个业务场景中,我们需要同时产生以上两个get请求,并需要等待它们都请求完毕后再做逻辑处理,你也许会想到回调嵌套,但现在你可以使用axios的并发请求API: axios.all()

当这两个请求都完成的时候会触发 axios.spread() 函数,res1和res2两个参数分别代表返回的结果,相当实用的API。

其实上面我们刚刚讲到的 axios.get()  和  axios.post() 写法是axios给我们提供网络请求的一种别名方式,如果你不喜欢这种写法,完成可以自己通过配置请求参数,实现你想要的请求效果。

举个栗子,对比一下。

手动配置参数,实现一个post请求:

// 发送一个 POST 请求
 axios({
    method: 'post',
    url: '/user',
    data: {
        name: '前端君',
    }
 });

使用post别名写法,实现一个post请求:

//发送一个 POST 请求
 axios.post('/user', {
     name: '前端君',
 })

两种写法均可,大家可以根据自己的喜好和习惯,任选一种。

别名写法是为了大家方便地阅读和编写代码,除了 axios.get() 和 axios.post() ,axios还为所有支持的请求方式提供了别名。

axios.request()

axios.delete( )

axios.head( )

axios.put( )

axios.patch( )

这些别名用法大同小异,大家需要用到的时候,可以查看axios的API文档,也十分简单。

除了以上常用的API以外,axios还提供了其他API,允许开发者配置默认值,拦截器,处理错误和消除请求等操作,十分简单易用,在这里就不一一展开讲述了。

推荐

扩展阅读

原创教程:《ECMAScript 6 系列》

原创教程:《Vue2.0基础系列》

附加习题:《ECMAScript 6 系列》的 2套

附加习题:《Vue2.0基础系列》的 1 套

关于职场

职场感悟:混口饭吃,谈不上喜欢

感到迷茫:我很努力,但依然很迷茫

薪资待遇:那么点工资,能招到人吗?

搞笑黑话:互联网公司黑话,搞笑到爆

资源推荐

其实学好技术并不难,架构师免费分享全网全套最新web前端、JavaScript、HTML5、PHP、数据库……等视频资料!

[总价值超3万!]年薪35万以上的大牛几乎都看了!

加微信: abc15689892 免费领取,由于领取的朋友比较多,所以加微信时一定要备注:555,否则很难通过。

【vue2.0进阶】用axios来实现数据请求,简单易用相关推荐

  1. 【vue2.0进阶】vue-router10分钟快速入门

    又一周过去了,时间过得很快,更新不能落下,继续我们的vue2.0进阶教程.今天前端君来跟大家一起快速入门vue-router. 学一个新东西之前,我们一定先要学会问:它有什么作用,为什么要学它? 对于 ...

  2. 【vue2.0进阶篇】用transition组件轻松实现过渡效果

    Vue系列连载又继续了,公众号和微信号都接到了伙伴们的催更,最近忙于工作,没来得及时更新<Vue2.0进阶>的教程文章,大家久等了. 这一节我们来学习如何利用Vue提供的transitio ...

  3. 【vue2.0进阶】案例:用Vuex实现一个简单的计算器

    昨天我们学习了Veux的几个重要的核心概念.当然只讲概念还不够,必须要结合上案例才能理解得更深刻. 马上就开始我们今天的案例:用Vuex实现一个简单的网页计算器. 我们之前的章节说过,Vuex适合在较 ...

  4. 【vue2.0进阶】轻松理解Vuex的3个核心概念

    上一节前端君和大家一起认识了Vuex,我们了解了Vuex是一个提供状态管理机制,相比使用传统的全局对象,它有两大优点,一个是它的状态存储是响应式的,另一个是要不能随意修改Vuex的状态,必须按照它的规 ...

  5. 【vue2.0进阶】轻松理解Vuex的3个核心概念及简单应用案例(计算器)

    Vuex是一个提供状态管理机制,相比使用传统的全局对象,它有两大优点,一个是它的状态存储是响应式的,另一个是要不能随意修改Vuex的状态,必须按照它的规矩来办事.最后也了解了它有适用和不适用的业务场景 ...

  6. axios重新调用失败的ajax_Vue之axios实现ajax数据请求

    Vue通过axios实现数据请求 vue.js默认没有提供ajax功能的.所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互. # 下载地址: https://un ...

  7. vue2.0 使用xlsx读取excel文件数据 操作流程 以及文件中特殊日期数据的处理

    1. 安装xlsx依赖 cnpm install xlsx --save 2.需要处理的文件 这里有一个转换中经常会遇见的问题,就是带有反斜杠的日期数据被转换成了一串数字,在接下来的演示中提供了我现在 ...

  8. Vue2.0进阶组件篇1 教你秒撸(短信倒计时组件)

    原本我想隔个几天再发文章,刚好今天项目上线,环境有问题,导致只有干等,刚好要为公司打造一套属于公司自己的一系列功能组件,这个使命就交给我了,大家也一直叫我来点干货,说实话我只是一个湿货,肚子里干一点就 ...

  9. Vue2.0进阶组件 短信倒计时组件

    原本我想隔个几天再发文章,刚好今天项目上线,环境有问题,导致只有干等,刚好要为公司打造一套属于公司自己的一系列功能组件,这个使命就交给我了,大家也一直叫我来点干货,说实话我只是一个湿货,肚子里干一点就 ...

最新文章

  1. 7 pe系统安装_【软件课程之家】PE系统安装教程
  2. 进程,线程,消息循环的关系
  3. BeanFactory和ApplicationContext对比
  4. 韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验
  5. OpenGL实用开源代码列表
  6. 理论基础 —— 排序 —— 直接选择排序
  7. 1111 复习 形状的打印
  8. npm 有用的一些全局包
  9. 加载elementor时出现问题_在使用聚氨酯发泡机时出现问题的解决方法!
  10. Vue el-input实现动态显示type为textarea的文字数量、剩余字数
  11. 计算机端口联机,网络端口之二端口传输机制
  12. axure 7.0 7.0.0.3142 简体中文版(附汉化包注册)
  13. C# 文件读写系列二
  14. 4.Prometheus 监控技术与实践 --- 服务发现
  15. IDEA中集成使用SVN
  16. 苹果关掉200m限制_苹果怎么取消200m限制
  17. Android App图标静态更新方案
  18. Excel表格数据导入到Oracle
  19. Http请求体被转义
  20. 如何使用Mezzanine

热门文章

  1. python导入xlsxwriter要安装什么吗_windows下安装Python的XlsxWriter模块方法
  2. 作者:​刘新海(1976-),男,博士,中国人民银行征信中心副研究员。
  3. “金融与安全大数据”专题导读
  4. 使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener
  5. linux常用命令(16)locate命令
  6. Python rabbitmq的使用(五)
  7. 柯里化的前生今世(四):编译器与解释器
  8. Why React?
  9. hibernate简单应用
  10. 【Mockplus教程】界面闪烁花屏怎么办?