Ajax, fetch, axios 比較

ajax

  • 全名為Asynchronous JavaScript And XML.
  • 基於 XmlHttpRequest(XHR) 進行開發
  • 透過 XML 做資料交換。但不僅限於 XML,JSON 亦可
  • XHR Object 結構較為複雜,不易開發
  • 容易有 callback hell

axios

  • 封裝 XMLHttpRequest(XHR),更為易用
  • 將結果自動轉換成 json
  • 支援 Promise,解決 callback hell 問題
  • 可以通過網路請求檢測傳送進度
  • 提供超時處理
  • 瀏覽器相容性佳
  • 提供攔截器(interceptor),可以統一處理發送前或接收資料後的邏輯

fetch

  • ES6 新增加的 API,主要用來取代 ajax
  • 基於 Promise,解決 callback hell 問題
  • 提供豐富的 API,使用結構簡單
  • 預設不帶 cookie,使用時需要設定
  • 沒有辦法檢測請求的進度,無法取消或超時處理
  • 獲取結果有多種方法,資料型別亦有對應的獲取方法,封裝時需要分別處理,易出錯
  • 要支援老舊瀏覽器的話,須搭配 polyfill