垫片
Polyfill 是一段代码(通常是 Web 上的 JavaScript),用于在不支持现代功能的旧版浏览器上提供现代功能。
例如,Polyfill 可用于使用专有的 IE 过滤器模拟 IE7 中 text-shadow
的功能,或者使用 JavaScript 动态调整样式以模拟 rem 单位或媒体查询,或者其他任何您需要的功能。
Polyfill 未被完全使用的原因是,为了实现更好的功能和性能,API 的原生实现能够实现更多功能并运行得更快。例如,Object.create Polyfill 只包含在非原生实现中可实现的功能。
在某些情况下,Polyfill 用于解决浏览器以不同方式实现相同功能的问题。Polyfill 使用特定浏览器中的非标准功能,为 JavaScript 提供了一种符合标准的方式来访问该功能。虽然这种 Polyfill 的原因在今天非常罕见,但在 IE6 和 Netscape 的时代,每个浏览器都以非常不同的方式实现 JavaScript,因此这种情况非常普遍。 jQuery 的第一个版本 是 Polyfill 的早期示例。它实际上是浏览器特定解决方法的集合,为 JavaScript 开发人员提供了一个在所有浏览器中都可用的通用 API。当时,JavaScript 开发人员在尝试让自己的网站在所有设备上正常工作时遇到了重大问题,因为浏览器之间存在如此大的差异,网站可能需要以截然不同的方式进行编程,并根据用户的浏览器拥有完全不同的用户界面。因此,JavaScript 开发人员只能访问极少数的 JavaScript API,这些 API 在所有浏览器中或多或少地一致工作。由于现代浏览器主要根据标准语义实现了广泛的 API 集合,因此使用 Polyfill 来处理浏览器特定的实现今天已经不那么常见了。
另请参见
- 什么是 Polyfill?(由 Polyfill 一词的创造者 Remy Sharp 撰写的文章)