В чем смысл полифилов в HTML5?


Что означает полифилл в HTML5? Я видел это слово во многих сайтах о HTML5, например HTML5-кроссбраузерные полифиллы.

Итак, здесь мы собираем все прокладки, резервные копии и полифиллы чтобы внедрить функциональность HTML5 в браузеры, которые этого не делают поддерживает их.

Я на самом деле не понял, что такое смысл полифилл.

Это новый метод HTML5 или библиотека JavaScript? Я никогда слышал это слово до HTML5.

и в чем разница между проставками, откаты, и полифиллы?

4 313

4 ответа:

polyfill-это резервный вариант браузера, выполненный на JavaScript, который позволяет функциональности, которую вы ожидаете работать в современных браузерах, работать в старых браузерах, например, поддерживать canvas (функция HTML5) в старых браузерах.

Это своего рода метод HTML5, поскольку он используется в сочетании с HTML5, но он не является частью HTML5, и вы можете иметь полифиллы без HTML5 (например, для поддержки методов CSS3, которые вы хотите).

во-первых, давайте выясним, что такое полифил: полифил не является частью стандарта HTML5. Полифилл также не ограничен Javascript, хотя вы часто видите, что в этих контекстах упоминаются полифиллы.

термин polyfill сам по себе относится к некоторому коду, который "позволяет вам иметь определенную функциональность, которую вы ожидаете в текущих или "современных" браузерах, а также работать в других браузерах, которые не имеют встроенной поддержки этой функциональности. "

источник и пример polyfill здесь:

http://www.programmerinterview.com/index.php/html5/html5-polyfill/

polyfill-это фрагмент кода (или плагин), который предоставляет технологию, которую вы, разработчик, ожидаете, что браузер предоставит изначально.

полифилл-это прокладка, которая заменяет исходный вызов с вызовом на прокладку.

например, скажем, вы хотите использовать навигатор.объект mediaDevices, но не все браузеры поддерживают это. Вы можете себе представить библиотеку, которая предоставляет прокладку, которую вы можете использовать следующим образом:

<script src="js/MediaShim.js"></script>
<script>
    MediaShim.mediaDevices.getUserMedia(...);
</script>

в этом случае вы явно вызываете оболочку вместо использования исходного объекта или метода. Полифилл, с другой стороны, заменяет объекты и методы исходный объект.

например:

<script src="js/adapter.js"></script>
<script>
    navigator.mediaDevices.getUserMedia(...);
</script>

в вашем коде это выглядит так, как будто вы используете стандартный навигатор.объект mediaDevices. Но на самом деле, полифилл (адаптер.js в Примере) заменил этот объект на свой собственный.

тот, который он заменил его, - это прокладка. Это позволит определить, поддерживается ли функция изначально и использовать ее, если она есть, или она будет работать вокруг нее с помощью других API, если это не так.

таким образом, полифилл является своего рода" прозрачная " прокладка. И это то, что Реми Шарп (который придумал этот термин) имел в виду, говоря "Если вы удалили скрипт polyfill, ваш код будет продолжать работать, без каких-либо изменений, необходимых, несмотря на удаление polyfill".