fetch axios ajax的區別

JQ ajax

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

優缺點:

  • 本身是針對mvc編程,不符合mvvm前端開發流程
  • 基于原生XHR進行開發,XHR結構本身不清晰
  • JQuery整個項目太大,單純使用ajax卻要引入整個JQuery非常的不合理

axios

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

優缺點:

  • 從瀏覽器中創建XMLHttpRequest
  • 從node.js 中發出http請求
  • 支持 Promise API
  • 客戶端支持防止CSRF(偽腳本攻擊)
    -提供了并發請求API接口
  • 支持請求/響應攔截
  • 取消請求
    -自動轉換json數據

fetch

try {
  let response = await fetch(url);
  let data = response.json();
  console.log(data);
} catch(e) {
   console.log("Oops, error", e);
}

優缺點:

  • 關注分離,沒有將輸入、輸出和用事件來跟蹤的狀態混合在一個對象中
  • 更好更方便的寫法
  • 更加底層化,提供了豐富的API
  • 脫離了XHR
  • 1)fetchtch只對網絡請求報錯,對400,500都當做成功的請求,需要封裝去處理
  • 2)fetch默認不會帶cookie,需要添加配置項
  • 3)fetch不支持abort,不支持超時控制,使用setTimeout及Promise.reject的實現的超時控制并不能阻止請求過程繼續在后臺運行,造成了量的浪費
  • 4)fetch沒有辦法原生監測請求的進度,而XHR可以
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容