使用JavaScript作開發,始終不能繞不過網絡這一關。node
目前主要的網絡使用場景有如下兩大塊:ios
AJAX (browser)git
HTTP client (server)es6
固然,若是正在開發一個isomorphic/universal應用,你可能須要一個能同時應付browser和server端的東西。github
無論怎麼樣,直接使用XMLHttpRequest
是很是繁瑣麻煩的,一個更簡單的庫來幫助咱們簡化編碼是十分必要的。ajax
不少人使用jQuery的$.ajax
,但若是隻爲了簡化AJAX編碼就引入整個jQuery未免有些太浪費了。chrome
首先,讓咱們來列下都有哪些可用的AJAX/HTTP方法/庫。axios
browser | node | promise | 單一職責 | 標準規範 | |
---|---|---|---|---|---|
XMLHttpRequest | O | X | X | O | O |
Node HTTP | X | O | X | O | O |
fetch | O | X | O | O | O |
node-fetch | X | O | O | O | O |
isomorphic-fetch | O | O | O | O | O |
superagent | O | O | X | O | X |
axios | O | O | O | O | X |
request | X | O | X | O | X |
jQuery | O | X | X | X | X |
reqwest | O | O | O | O | X |
從上表的對比,能夠看出,時至今天(2016/02/15),若是要選擇一個AJAX/HTTP庫,符合標準規範的fetch
無疑是最好的選擇。promise
固然,fetch也不是十全十美的,目前(2016/02/15)只有chrome/firefox/opera原生支持fetch
。瀏覽器
想在其餘瀏覽器上使用,得引入一些polyfill,好比github的fetch
想在node上使用,得引入node-fetch
想在瀏覽器和node上同時使用,得引入isomorphic-fetch,它包含了fetch和node-fetch
另外,由於fetch
是基於promise
的,若是你的目標運行環境不支持promise
,還得引入es6-promise這個polyfill才行。
可是無論怎麼樣,緊跟標準規範老是不會錯的,這些polyfill也總有一天會被移出,咱們只是提早享受標準帶來的好處而已,不是嗎。