Qual è il significato dei polyfill in HTML5?

Qual è il significato dei polyfill in HTML5? Ho visto questa parola in molti siti su HTML5, ad esempio HTML5-Cross-Browser-Polyfills.

Quindi qui stiamo raccogliendo tutti gli shim, fallback e polyfill per impiantare funzionalità HTML5 nei browser che non li supportano nativamente.

In realtà non ho capito quale sia il significato dei polyfill.

È una nuova tecnica HTML5 o una libreria JavaScript? Non ho mai sentito questa parola prima di HTML5.

E qual è la differenza tra shim, fallback e polyfill?

    Un polyfill è un fallback del browser, realizzato in JavaScript, che consente alle funzionalità che ci si aspetta di utilizzare nei browser moderni di funzionare con browser meno recenti, ad esempio per supportare canvas (una funzionalità HTML5) nei browser più vecchi.

    È una specie di tecnica HTML5, poiché viene utilizzata insieme a HTML5, ma non fa parte di HTML5 e puoi avere polifibri senza HTML5 (ad esempio, per supportare le tecniche CSS3 che desideri).

    Ecco un buon post:

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

    Ecco un elenco completo di Polyfills e Shim:

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

    Innanzitutto chiariamo cosa non è un polyfil: un polyfill non fa parte dello standard HTML5. Né è un polyfill limitato a Javascript, anche se spesso in questi contesti si fa riferimento a polifere.

    Il termine polyfill si riferisce ad un codice che “ti permette di avere alcune funzionalità specifiche che ti aspetti dai browser attuali o” moderni “per funzionare anche in altri browser che non hanno il supporto per quella funzionalità integrata.”

    Fonte ed esempio di polyfill qui:

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

    Un polyfill è un pezzo di codice (o plugin) che fornisce la tecnologia che tu, lo sviluppatore, si aspetta che il browser fornisca in modo nativo.

    Un polyfill è uno spessore che sostituisce la chiamata originale con la chiamata a uno spessore.

    Ad esempio, supponiamo che tu voglia utilizzare l’object navigator.mediaDevices, ma non tutti i browser lo supportano. Potresti immaginare una libreria che fornisca uno spessore che potresti usare in questo modo:

      

    In questo caso, si sta chiamando esplicitamente uno shim anziché utilizzare l’object o il metodo originale. Il polyfill, d’altra parte, sostituisce gli oggetti e i metodi sugli oggetti originali.

    Per esempio:

       

    Nel tuo codice, sembra che tu stia usando l’object standard navigator.mediaDevices. Ma in realtà, il polyfill (adapter.js nell’esempio) ha sostituito questo object con il proprio.

    Quello con cui lo ha sostituito è uno spessore. Questo rileverà se la funzione è supportata in modo nativo e la userà se lo è, o se funzionerà attorno ad essa usando altre API se non lo è.

    Quindi un polyfill è una sorta di spessore “trasparente”. E questo è ciò che Remy Sharp (che ha coniato il termine) intendeva dire ” se hai rimosso lo script polyfill, il tuo codice continuerà a funzionare, senza che siano necessarie modifiche nonostante il polyfill venga rimosso “.