在Angular捂掰、React、Vue這些移動端web框架大行其道的今天蔑穴,很大的改變了WEB應(yīng)用的開發(fā)方式。而這些框架通常都只專注于View層惧浴,而對于http請求存和,開發(fā)者一般都會單獨引入一個http 請求庫,如axios。隨著項目的使用捐腿,覺得 axios 不盡完美纵朋,在一些場景用起來并不舒服,所以才有了Fly叙量。
在設(shè)計 Fly 的過程中倡蝙,為了符合使用習(xí)慣,借鑒了axios(但并不完全兼容)绞佩,下面將 Fly 和 axios做一個詳細的對比:
共同點
1寺鸥,都支持Promise API,
2,都同時支持Node和Browser環(huán)境
3品山,都支持請求/響應(yīng)攔截器
4胆建,都支持自動轉(zhuǎn)換 JSON
不同點
瀏覽器環(huán)境
瀏覽器環(huán)境下兩者功能不分伯仲,最大的不同是大小肘交,fly.min.js只有4K左右笆载,而axios.min.js 12K左右。Fly更輕量涯呻,集成成本更低凉驻。
Node環(huán)境
Node下 Fly 的功能要明顯強于axios,F(xiàn)ly在node下不僅提供了文件下載复罐、上傳的API涝登,而且還可以通過fly.$http直接調(diào)用request 庫 的所有功能,詳情請參照Node下增強的API效诅。
請求轉(zhuǎn)發(fā)
Fly最大的特點就是在混合APP中支持請求轉(zhuǎn)發(fā)胀滚,而axios不支持,關(guān)于請求轉(zhuǎn)發(fā)的詳細內(nèi)容請參照請求重定向乱投。值得注意的是咽笼,在web app中,webview無法攔截ajax請求戚炫,而當(dāng)時現(xiàn)有的js http請求庫沒有一個提供請求轉(zhuǎn)發(fā)的功能剑刑。
Http Engine
Fly中提出了Http Engine的概念,F(xiàn)ly可以通過更換Http Engine的方式實現(xiàn)很多有趣的功能嘹悼,比如全局Ajax攔截叛甫,詳情請參考全局ajax攔截。
設(shè)計思想
Fly采用分層的設(shè)計思想杨伙,將上層用戶接口和底層Http Engine分離。采用適配器模式萌腿,讓實現(xiàn)Http Engine變的非常容易限匣。正是這樣的框架設(shè)計,可以通過替換底層Http Engine的方式,使得fly能夠在靈活的支持各種環(huán)境的同時又能保證上層接口的一致性米死。還有锌历,通過adapter,用戶完全可以自定義http請求的實現(xiàn).......還有很多高級的玩法峦筒。
總結(jié)
在瀏覽器端究西,fly和axios實現(xiàn)的功能差不多,fly以輕巧取勝物喷;在node端卤材,fly占有明顯的優(yōu)勢;而在于web app中峦失,fly 的請求轉(zhuǎn)發(fā)功能是獨有的扇丛。而在設(shè)計思想上,fly更是技高一籌尉辑,這使得fly能夠輕松的在不同的環(huán)境下運行并可以方便的對其進行定制化帆精。