Quelle est la signification des polyfills dans HTML5?

Quel est le sens de polyfills en HTML5? J'ai vu ce mot dans de nombreux sites sur HTML5, par exemple HTML5-Cross-Browser-Polyfills.

donc ici nous recueillons toutes les cales, les retombées, et les polyfills afin d'implanter la fonctionnalité HTML5 dans les navigateurs qui ne les soutenir nativement.

en fait, je ne comprends pas ce qu'est la signification des polyfills.

est-il un nouvelle technique HTML5 ou bibliothèque JavaScript? Je n'ai jamais entendu ce mot avant HTML5.

et quelle est la différence entre les cales, les replis et les polyfills?

313
demandé sur nullpointer 2011-08-17 06:27:04

4 réponses

un polyfill est un repli de navigateur, fait en JavaScript, qui permet la fonctionnalité que vous attendez de travailler dans les navigateurs modernes pour travailler dans les navigateurs plus anciens, par exemple, pour soutenir canvas (une fonctionnalité HTML5) dans les navigateurs plus anciens.

c'est une sorte de technique HTML5, car il est utilisé en conjonction avec HTML5, mais il ne fait pas partie de HTML5, et vous pouvez avoir des polyfills sans avoir HTML5 (par exemple, pour soutenir les techniques CSS3 que vous voulez).

voici un bon post:

http://remysharp.com/2010/10/08/what-is-a-polyfill /

Voici une liste complète de Polyfills et de cales:

https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

316
répondu Calvin Froedge 2016-10-04 18:54:52

commençons par clarifier ce qu'un polyfil n'est pas: un polyfill ne fait pas partie de la norme HTML5. Un polyfill n'est pas non plus limité au Javascript, même si vous voyez souvent des polyfills mentionnés dans ces contextes.

le terme polyfill lui-même se réfère à un code qui "vous permet d'avoir certaines fonctionnalités spécifiques que vous attendez dans les navigateurs actuels ou" modernes " de travailler également dans d'autres navigateurs qui n'ont pas le soutien pour cette fonctionnalité intégrée. "

Source et exemple de polyfill ici:

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

50
répondu Jarvis 2013-09-16 23:08:22

un polyfill est un morceau de code (ou plugin) qui fournit la technologie que vous, le développeur, attendez du navigateur à fournir nativement.

18
répondu Ranjeet Mane 2016-06-10 09:16:40

un polyfill est un shim qui remplace l'appel original avec l'appel à un shim.

par exemple, dites que vous voulez utiliser le navigateur.mediaDevices object, mais tous les navigateurs ne le supportent pas. Vous pourriez imaginer une bibliothèque qui a fourni un shim que vous pourriez utiliser comme ceci:

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

dans ce cas, vous appelez explicitement un shim au lieu d'utiliser l'objet ou la méthode d'origine. Le polyfill, sur l'autre main, remplace les objets et les méthodes sur les objets d'origine.

par exemple:

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

dans votre code, il semble que vous utilisez le navigateur standard.mediaDevices object. Mais vraiment, le polyfill (adaptateur.js dans l'exemple) a remplacé cet objet avec son propre.

celui qui l'a remplacé est une cale. Ceci détectera si la fonctionnalité est nativement supportée et l'utilisera si elle l'est, ou cela fonctionnera autour de lui en utilisant d'autres API si elle n'est pas.

donc un polyfill est une sorte de" transparent " shim. Et C'est ce que Remy Sharp (qui a inventé le terme) a voulu dire en disant " si vous supprimez le script de polyfill, votre code continuera à fonctionner, sans aucun changement requis malgré que le polyfill soit supprimé ".

13
répondu Richard Shepherd 2016-12-06 13:32:25