Полифил
Полифил или Полифилл (англ. Polyfill) в веб-программировании это код, реализующий какую-либо функциональность, которая не поддерживается в некоторых версиях веб-браузеров. Обычно представляет собой библиотеку JavaScript, которая реализует поддержку веб-стандарта HTML5 в версиях браузеров, где поддержка этих функций частично или полностью отсутствует. Это обеспечивает более или менее единообразное отображение веб-страниц в разных веб-браузерах[1].
Происхождение термина[править | править код]
Термин был придуман Реми Шарпом (англ. Remy Sharp) в 2009 году во время работы над книгой «Введение в HTML5», как подходящее слово, с которым можно ассоциировать моделирование API с использованием JavaScript (или Flash, либо чего-нибудь другого), для веб-браузера, у которого не предусмотрен таковой изначально.
«Poly-» (от греч. Polloi — много) говорит о привлечении любого числа технологий, то есть с поставленной задачей можно справиться не только посредством JavaScript, а вторая часть «-fill» (англ. fill — наполнять, заполнять) подразумевает заполнение той «дыры» браузера, в которой и должна находиться реализуемая таким образом технология.
Кроме того, в строительной отрасли известна шпаклёвка «Polyfilla». По мнению автора термина, ассоциация с заделыванием трещин и дыр в стенах вполне подходит для визуализации того, как полифилы в веб-программировании «ремонтируют» браузер[2].
Назначение[править | править код]
Полифилы позволяют исправлять ошибки в конкретном API или добавлять в веб-браузер функциональность, которая частично или полностью им не поддерживается. Полифилы не создают лишних зависимостей и могут быть легко удалены, когда они больше не нужны. Использование полифилов отлично зарекомендовало себя и широко применяется в тех случаях, когда необходимо повысить функциональность старых (а иногда и новых) браузеров до желаемого уровня.
Примеры[править | править код]
- core-js
- core-js это наиболее популярный и мощный полифил стандартной библиотеки JavaScript. Включает полифилы возможностей языка по стандарту ECMAScript вплоть до 2019: обещания, символы, коллекции, итераторы, типизированные массивы, много других возможностей, предложения ECMAScript, некоторые кросс-платформенные возможности из стандартов и предложений WHATWG / W3C, вроде
URL
. Вы можете загружать только необходимые вам модули или использовать полифил без загрязнения глобального пространства имён. Интегрирован с Babel, что позволяет автоматически добавлять необходимые модули core-js в ваш код. - HTML5 Shiv
- Обеспечивает отображение элементов HTML5 в Internet Explorer 6-8, Safari 4.x, Firefox 3.x. и др. и позволяет оформлять их надлежащим образом с помощью CSS.
- Flexie
- Обеспечивает кросс-браузерную поддержку Flexible Box Module, которая позволяет верстать страницы со сложной компоновкой блоков быстрее, легче и удобней, чем с использованием плавающих элементов.
- Webshims Lib
- Библиотека, после подключения которой, при просмотре веб-страниц в браузере IE 9-й версии и ниже, начинают работать элементы форм HTML5 таких типов как date, range, color и другие.
- Selectivizr
- Используется для обработки CSS3 селекторов в IE 8-й версии и ниже в сочетании с JavaScript библиотеками, такими как jQuery или MooTools.
- CSS3 PIE
- PIE (Progressive Internet Explorer) реализует некоторые из наиболее популярных свойств CSS3 в веб-браузерах IE.
- es5shim
- Обеспечивает поддержку в старых браузерах IE практически всех функции, которые были утверждены в спецификации ECMAScript 5.
- MediaElement.js
- Обеспечивает поддержку во всех браузерах, в том числе мобильных, воспроизведение аудио- и видеоконтента. При использовании этого полифила, даже в тех браузерах, которые не понимают разметку HTML5, отображается альтернативный вариант плеера, использующий Flash.
- FlashCanvas
- Позволяет старым версиям Internet Explorer работать с Canvas (HTML). Один из немногих полифилов, который представлен, в том числе, расширенной платной версией.
- Storage Polyfill
- В старых версиях браузеров, где отсутствует поддержка Web Storage, позволяет сохранить функциональность, используя Cookie.
Примечания[править | править код]
- ↑ Modernizr Documentation . (англ.)
- ↑ Шарп, Реми What is a polyfill? . (англ.)
Ссылки[править | править код]
- List of polyfills providing HTML5 facilities . (англ.)
- HTML5 Polyfill List By Feature (англ.)