polyfill
Polyfill 是一段程式碼(通常是 Web 上的 JavaScript),用於在不支援現代功能的舊瀏覽器上提供這些功能。
例如,polyfill 可以用來在 IE7 中使用專有的 IE 過濾器模擬 text-shadow 的功能,或者透過 JavaScript 動態調整樣式來模擬 rem 單位或媒體查詢,或者實現任何你需要的其他功能。
不完全使用 polyfill 的原因是,原生實現具有更好的功能和更高的效能。API 的原生實現比 polyfill 更強大、速度更快。例如,Object.create polyfill 只包含非原生實現 Object.create 所可能具備的功能。
有時,polyfill 也被用來解決瀏覽器以不同方式實現相同功能的問題。polyfill 利用某個瀏覽器中的非標準功能,為 JavaScript 提供符合標準的方式來訪問該功能。儘管如今這種使用 polyfill 的原因已經非常罕見,但在 IE6 和 Netscape 時代尤其普遍,那時每個瀏覽器對 JavaScript 的實現都大相徑庭。jQuery 的第一個版本就是一個早期的 polyfill 示例。它本質上是瀏覽器特定解決方法的集合,旨在為 JavaScript 開發者提供一個適用於所有瀏覽器的通用 API。當時,JavaScript 開發者在努力讓他們的網站在所有裝置上都能正常工作時遇到了巨大的問題,因為瀏覽器之間存在如此大的差異,網站可能需要根據使用者的瀏覽器進行根本性地不同程式設計,並擁有截然不同的使用者介面。因此,JavaScript 開發者只能訪問極少數在所有瀏覽器中或多或少保持一致的 JavaScript API。如今,使用 polyfill 來處理瀏覽器特定的實現已經不那麼常見了,因為現代瀏覽器大多根據標準語義實現了一整套廣泛的 API。
另見
- 什麼是 polyfill?(Remy Sharp 的文章,該術語的創始人)