fly.js vs axios

fly vs axios

這是fly的第二篇文章,主要是將fly和axios進行一個全面的對比。node

首先感謝你們支持,在fly的第一篇文章 JS HTTP 請求終極解決方案 - fly.js 發佈後,github 首日破百星,若是您是新讀者,在您瞭解了fly以後,若是您喜歡,不用找打賞入口,去github star一下就是您對做者的最大的支持。ios

在Angular、React、Vue這些移動端web框架大行其道的今天,很大的改變了WEB應用的開發方式。而這些框架一般都只專一於View層,而對於http請求,開發者通常都會單獨引入一個http 請求庫,如axios。筆者也是從使用axios過來的,但隨着項目的使用,以爲 axios 不盡完美,在一些場景用起來並不舒服,因此纔有了Fly。git

在設計 Fly 的過程當中,爲了符合使用習慣,借鑑了axios(但並不徹底兼容),下面將 Fly 和 axios作一個詳細的對比:github

共同點

  1. 都支持Promise API
  2. 都同時支持Node和Browser環境
  3. 都支持請求/響應攔截器
  4. 都支持自動轉換 JSON

不一樣點

瀏覽器環境

瀏覽器環境下二者功能不分伯仲,最大的不一樣是大小,fly.min.js只有4K左右,而axios.min.js 12K左右。Fly更輕量,集成成本更低。web

Node環境

Node下 Fly 的功能要明顯強於axios,Fly在node下不只提供了文件下載、上傳的API,並且還能夠經過 fly.$http 直接調用 request 庫 的全部功能,詳情請參照Node下加強的APIajax

請求轉發

Fly最大的特色就是在混合APP中支持請求轉發,而axios不支持,關於請求轉發的詳細內容請參照請求重定向值得注意的是,做者決定寫fly以前最重要的一個背景就是,在web app中,webview沒法攔截ajax請求,而當時現有的js http請求庫沒有一個提供請求轉發的功能。axios

Http Engine

Fly中提出了Http Engine的概念,Fly能夠經過更換Http Engine的方式實現不少有趣的功能,好比全局Ajax攔截,詳情請參考 全局ajax攔截瀏覽器

設計思想

Fly採用分層的設計思想,將上層用戶接口和底層Http Engine分離。採用適配器模式,讓實現Http Engine變的很是容易。正是這樣的框架設計,能夠經過替換底層Http Engine的方式,使得fly可以在靈活的支持各類環境的同時又能保證上層接口的一致性。還有,經過adapter,用戶徹底能夠自定義http請求的實現.......還有不少高級的玩法。 app

總結

在瀏覽器端,fly和axios實現的功能差很少,fly以輕巧取勝;在node端,fly佔有明顯的優點;而在於web app中,fly 的請求轉發功能是獨有的。而在設計思想上,fly更是技高一籌,這使得fly可以輕鬆的在不一樣的環境下運行並能夠方便的對其進行定製化。框架

最後貼出fly github地址,若是你喜歡,歡迎star,以使更多的人知道fly,感謝你的支持:github.com/wendux/fly

相關文章
相關標籤/搜索