fetch竟然都是浏览器自带的了?==》window.fetch

现在window.fetch基本上每一个浏览器都已经自带(IE除外),以后再也不用引入$.ajax、axios、fetch了就能用了

axios没有这殊荣,原生自带意味着什么,不用说什么了、多么重要能让window当中自带fetch方法,以前听过一种说法叫传统ajax已死,fetch永生,当时还以为是一句笑话,现在看来,fetch已经征服了各个js大佬,正在走向通用化的道路

如果fetch组建通用之后,不再考虑浏览器兼容问题,那么会有多么可怕的事实、就是强迫所有人放弃任何ajax封装方法、因为这是自带的,无论你使用与否,浏览器都会把它放到window对象当中,对于那些对网页性能要求极高的前段工作者们,是绝对不会允许自己的代码中引入不必要的代码、而对于那些不愿意引入资源的人、也会强迫自己熟悉fetch得到使用方法

所以说fetch走向了成功!!!!!!!

总结一下,Fetch 优点主要有:

  1. 语法简洁,更加语义化

  2. 基于标准 Promise 实现,支持 async/await

  3. 同构方便,使用 isomorphic-fetch

先看一下 Fetch 原生支持率:

原生支持率并不高,幸运的是,引入下面这些 polyfill 后可以完美支持 IE8+ :

  1. 由于 IE8 是 ES3,需要引入 ES5 的 polyfill: es5-shim, es5-sham

  2. 引入 Promise 的 polyfill: es6-promise

  3. 引入 fetch 探测库:fetch-detector

  4. 引入 fetch 的 polyfill: fetch-ie8

  5. 可选:如果你还使用了 jsonp,引入 fetch-jsonp

  6. 可选:开启 Babel 的 runtime 模式,现在就使用 async/await

Fetch polyfill 的基本原理是探测是否存在 window.fetch 方法,如果没有则用 XHR 实现。这也是 github/fetch 的做法,但是有些浏览器(Chrome 45)原生支持 Fetch,但响应中有中文时会乱码,老外又不太关心这种问题,所以我自己才封装了 fetch-detector 和 fetch-ie8 只在浏览器稳定支持 Fetch 情况下才使用原生 Fetch。这些库现在每天有几千万个请求都在使用,绝对靠谱

最后说一句   传统AJAX已死,Fetch永生!!

猜你喜欢

转载自blog.csdn.net/zuggs_/article/details/84793806
今日推荐