Polyfill 是一块代码(通常是 Web 上的 JavaScript),用来为旧浏览器提供它没有原生支持的较新的功能。
例如:浏览器不支持管道运算符,Babel 提供了 @babel/plugin-proposal-pipeline-operator
插件可以让我们在浏览器中使用它。
一些不错的 Polyfill:
- fetch
window.fetch
JavaScript polyfill。 - fastclick 可消除带有触摸 UI 的浏览器上的点击延迟 Polyfill。另外,关于移动设备浏览器 300ms 点击延迟 有不清楚的,可以阅读移动端 300ms 点击延迟和点击穿透。
- Respond 用于最小/最大宽度 CSS3 媒体查询的快速轻量级 polyfill(适用于 IE 6-8 等)
- es6-promise ES6 风格的 Promise 的 polyfill
- unfetch 🐕 最小 500b 的
fetch
polyfill。
Modernizr 提供了 HTML5 特性所有可能的 polyfill 列表:HTML5 Cross Browser Polyfills。
Polyfill.io 是一种通过选择性地填充浏览器所需的内容来减少 Web 开发挫折的服务。Polyfill.io 读取每个请求的 User-Agent header,并返回适用于请求浏览器的 polyfill。
Tips:还是有必要说明一下,上面这些 Polyfill 随着 Web 的发展,大多数原生功能在浏览器中都已被很好的支持。您可能不在需要它们,这要看您是否需要兼容低版本浏览器。另外,可以在 Can I Use 上查看它们的支持情况。
- What is a Polyfill?(Remy Sharp,概念发明者)
- Polyfill 和转译器