polyfill 和垫片的相关性

Relevance of polyfills and shims

现在是 2016 年了。ECMAScript 2015 已经非常标准化了。 HTML5 和 CSS3,虽然有一些小问题,但非常有用。

然而, 如今的教程仍然包含 polyfill 和垫片(很好的例子是 Angular 2 quickstart)。这对我来说似乎不合逻辑。

我对标准化的推论来自CanIUse.com and the Kangax ES6 compatibility tables

我同意 Internet Explorer 是一个主要原因(该死的,MS)但我已经检查了 CanIUse 面向使用的表格,而 IE11 只有(截至 2016 年 11 月 23 日)全球使用率 3%。

此外,我还检查了浏览器对 ES6 的支持,浏览器支持 90% 或以上(Chrome 领先 97%,Safari 10 据说支持 100%)。

回到我的问题,

如果浏览器已经赶上了,为什么还要使用 polyfill?

干杯!

即使比例很低,也是相当多的人。

一个试图接触 website/app 人的客户并不关心 es2015 的技术美感,他关心的是当有人在 windows xp 上使用 ie 6 时看起来不像个混蛋,并且无法访问他们的服务。

这是你个人的website/experiment吗?随意忽略垫片。
这是有人付钱的工作吗?忽略看起来很酷的东西,做适合他们的事情,包括垫片。

我认为可以回答围绕较新标准使用的旧技术的大多数问题的一个答案是遗留代码和向后兼容性。在一天结束的时候,你的浏览器总是需要 运行 旧代码,如果我们在 ES6 中关闭对 polyfills 的支持,那么我们会破坏很多网站。除此之外,很多人决定(无论出于何种原因)不更新,如果浏览器不支持较新的机制而是需要类似 polyfill 的东西来取代它,那么 polyfill 之类的东西可以用作遗留后备。