运用JavaScript做开辟,一直不能绕不过收集这一关。
现在重要的收集运用场景有以下两大块:
AJAX (browser)
HTTP client (server)
固然,假如正在开辟一个isomorphic/universal运用,你能够须要一个能同时敷衍browser和server端的东西。
不论怎样,直接运用XMLHttpRequest
是异常烦琐贫苦的,一个更简朴的库来协助我们简化编码是十分必要的。
很多人运用jQuery的$.ajax
,但假如只为了简化AJAX编码就引入全部jQuery难免有些太浪费了。
起首,让我们来列下都有哪些可用的AJAX/HTTP要领/库。
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
无疑是最好的挑选。
固然,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也总有一天会被移出,我们只是提早享用规范带来的优点罢了,不是吗。