ajax、axios和fetch的区别

1.jQuery ajax

$.ajax({
   type: 'POST',
   url: url,
   data: data,
   dataType: dataType,
   success: function () {},
   error: function () {}
});

  传统Ajax指的是XMLHttpRequest(XHR),最先出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间若是有前后关系的话,就会出现回调地域。javascript

  jQuery ajax 是对原生XHR的封装,除此以外还增长了对jsonp的支持。前端

  缺点:java

    一、自己是针对MVC的编程,不符合如今的前端MVVM的浪潮。node

    二、基于原生的XHR开发,XHR自己的架构不清晰ios

    三、jQuery整个项目太大,单纯使用ajax却要引入整个jQuery很是的不合理(采起个性化打包的方案又不能享受CDN服务)es6

    四、不符合关注分类的原则ajax

    五、配置和调用方式很是混乱,并且基于时间的异步模型不友好。编程

2.axios

  

axios({
    method: 'post',
    url: '/user/12345',
    data: {
        firstName: 'Fred',
        lastName: 'Flintstone'
    }
})
.then(function (response) {
    console.log(response);
})
.catch(function (error) {
    console.log(error);
});

 

  Vue2.0以后,尤雨溪推荐你们用axios替换JQuery ajax,想必让axios进入了不少人的目光中。json

  axios是一个基于promise用于浏览器和nodejs的HTTP客户端,本质上也是对原生XHR的封装,只不过它是promise的实现版本,符合最新的ES规范,它自己具备如下特征:axios

  一、从浏览器中建立XMLHttpRequerst

  二、支持promise API

  三、客户端支持防止CSRF(防止CSRF:就是让你的每一个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就能够轻松辨别出这个请求是不是用户在假冒网站上的误导输入,从而采起正确的策略。)

  四、提供了一些并发请求的接口(重要,方便了不少的操做)

  五、从 nodejs 建立 http 请求

  六、拦截请求和响应

  七、转换请求和响应数据

  八、取消请求

  九、自动转换json数据

3.fetch

fetch('/getList')
      .then(res => res.json())
      .then(res => {
           console.log(res)
       })

  fetch号称是ajax的替代品,是es6出现的,使用了es6中的promise对象。fetch是基于promis设计的。fetch的代码结构比起ajax简单,参数有点像jQuery ajax。可是,必定记住fetch不是ajax的进一步封装,而是原生js,没有使用XHR对象。

  fetch的优势:
    1.符合关注分离,没有将输入、输出和用事件来跟踪的状态混杂在一个对象里
    2.更好更方便的写法

  总结:axios既提供了并发的封装,也没有fetch的各类问题,并且体积也较小,当之无愧如今最应该选用的请求的方式。

相关文章
相关标签/搜索