axios和ajax,fetch的區別

2022-04-03 19:54:50 字數 1767 閱讀 6731

1,傳統 ajax 指的是 xmlhttprequest(xhr), 最早出現的傳送後端請求技術,隸屬於原始js中,核心使用xmlhttprequest物件,多個請求之間如果有先後關係的話,就會出現**地獄

jquery ajax 是對原生xhr的封裝,除此以外還增添了對jsonp的支援。經過多年的更新維護,真的已經是非常的方便了,優點無需多言;如果是硬要舉出幾個缺點,那可能只有:

1.本身是針對mvc的程式設計,不符合現在前端mvvm的浪潮

2.基於原生的xhr開發,xhr本身的架構不清晰。

3.jquery整個專案太大,單純使用ajax卻要引入整個jquery非常的不合理(採取個性化打包的方案又不能享受cdn服務)

4.不符合關注分離(separation of concerns)的原則

5.配置和呼叫方式非常混亂,而且基於事件的非同步模型不友好。

2.axios它本身具有以下特徵:

1.從瀏覽器中建立 xmlhttprequest

2.支援 promise api

3.客戶端支援防止csrf

4.提供了一些併發請求的介面(重要,方便了很多的操作)

5.從 node.js 建立 http 請求

6.攔截請求和響應

7.轉換請求和響應資料

8.取消請求

9.自動轉換json資料

3.fetch

fetch號稱是ajax的替代品,是在es6出現的,使用了es6中的promise物件。fetch是基於promise設計的。fetch的**結構比起ajax簡單多了,引數有點像jquery ajax。但是,一定記住fetch不是ajax的進一步封裝,而是原生js,沒有使用xmlhttprequest物件

fetch的優點:

1.符合關注分離,沒有將輸入、輸出和用事件來跟蹤的狀態混雜在乙個物件裡

2.更好更方便的寫法

坦白說,上面的理由對我來說完全沒有什麼說服力,因為不管是jquery還是axios都已經幫我們把xhr封裝的足夠好,使用起來也足夠方便,為什麼我們還要花費大力氣去學習fetch?

我認為fetch的優勢主要優勢就是:

1.  語法簡潔,更加語義化

2. 基於標準 promise 實現,支援 async/await

3. 同構方便,使用 [isomorphic-fetch](

4.更加底層,提供的api豐富(request, response)

5.脫離了xhr,是es規範裡新的實現方式

最近在使用fetch的時候,也遇到了不少的問題:

fetch是乙個低層次的api,你可以把它考慮成原生的xhr,所以使用起來並不是那麼舒服,需要進行封裝。

例如:

1)fetch只對網路請求報錯,對400,500都當做成功的請求,伺服器返回 400,500 錯誤碼時並不會 reject,只有網路錯誤這些導致請求不能完成時,fetch 才會被 reject。

2)fetch預設不會帶cookie,需要新增配置項: fetch(url, )

3)fetch不支援abort,不支援超時控制,使用settimeout及promise.reject的實現的超時控制並不能阻止請求過程繼續在後台執行,造成了流量的浪費

4)fetch沒有辦法原生監測請求的進度,而xhr可以

Axios和ajax的區別

axios 是乙個基於 promise 的 http 庫,可以用在瀏覽器和 node.js 中。特點 1.從瀏覽器中建立 xmlhttprequests 2.從 node.js 建立 http 請求 3.支援 promise api 4.攔截請求和響應 5.轉換請求資料和響應資料 6.取消請求 7....

fetch和axios區別比較

try catch e 特點 缺點 1 fetch只對網路請求報錯,對400,500都當做成功的請求,需要封裝去處理 2 fetch預設不會帶cookie,需要新增配置項 3 fetch不支援abort,不支援超時控制,使用settimeout及promise.reject的實現的超時控制並不能阻止...

axios和 fetch的使用

3.1 axios fetch 目的 是在框架中使用資料請求 回顧 封裝ajax jquery ge t.get get post aj ax ajax aja x load 框架 資料請求 使用原生js提供的fetch 使用第三方封裝庫 axios vue中可以統一對axios進行掛載 vue r...