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可以