Jakie jest znaczenie polyfills w HTML5?

Jakie jest znaczenie polyfills w HTML5? Widziałem to słowo w wielu witrynach o HTML5, np. HTML5-Cross-Browser-Polyfills.

Więc tutaj zbieramy wszystkie shims, fallbacks, i polyfills aby zaimplementować funkcjonalność HTML5 w przeglądarkach, które nie natywnie je wspierać.

Właściwie nie rozumiem, jakie jest znaczenie polyfills.

Czy to nowa technika HTML5 czy biblioteka JavaScript? Nigdy wcześniej nie słyszałem tego słowa. HTML5.

A jaka jest różnica między podkładkami, podkładkami i polyfillami?

Author: nullpointer, 2011-08-17

4 answers

Polyfill jest alternatywą dla przeglądarki, wykonaną w JavaScript, która pozwala na funkcjonalność oczekującą pracy w nowoczesnych przeglądarkach do pracy w starszych przeglądarkach, np. do obsługi canvas (funkcja HTML5) w starszych przeglądarkach.

To rodzaj techniki HTML5, ponieważ jest używana w połączeniu z HTML5, ale nie jest częścią HTML5 i możesz mieć polyfills bez HTML5(na przykład, aby wspierać techniki CSS3, które chcesz).

Oto dobra post:

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

Oto obszerna lista Polifili i podkładek:

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

 316
Author: Calvin Froedge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 18:54:52

Po pierwsze wyjaśnijmy, czym nie jest polyfil: polyfill nie jest częścią standardu HTML5. Polyfill nie jest również ograniczony do Javascript, nawet jeśli często widzisz, że w tych kontekstach mówi się o polyfillach.

Sam termin polyfill odnosi się do jakiegoś kodu, który "pozwala na posiadanie określonej funkcjonalności, której oczekujesz w obecnych lub "nowoczesnych" przeglądarkach, również w innych przeglądarkach, które nie mają wbudowanej obsługi tej funkcjonalności. "

Źródło i przykład z polyfill tutaj:

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

 50
Author: Jarvis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-16 23:08:22

Polyfill to fragment kodu (lub wtyczka), który zapewnia technologię, którą ty, deweloper, oczekujesz, że przeglądarka dostarczy natywnie.

 18
Author: Ranjeet Mane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-10 09:16:40

Polyfill to shim, który zastępuje oryginalne wywołanie wywołaniem do shim.

Na przykład, powiedzmy, że chcesz użyć nawigatora.obiekt mediaDevices, ale nie wszystkie przeglądarki to obsługują. Możesz sobie wyobrazić bibliotekę, która dostarczyła podkładkę, której możesz użyć w ten sposób:

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

W tym przypadku jawnie wywołujesz shim zamiast używać oryginalnego obiektu lub metody. Z drugiej strony polyfill zastępuje obiekty i metody na oryginalnych obiektach.

Na przykład:

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

W Twoim kodzie wygląda to tak, jakbyś używał standardowego nawigatora.obiekt mediaDevices. Ale tak naprawdę, polyfill (adapter.js w przykładzie) zastąpił ten obiekt swoim własnym.

Ten, który go zastąpił, to shim. To wykryje, czy funkcja jest natywnie obsługiwana i użyje jej, jeśli jest, lub obejdzie ją za pomocą innych interfejsów API, jeśli nie jest.

Tak więc polyfill jest rodzajem" przezroczystej " podkładki. A To właśnie Remy Sharp (który ukuł termin) miał na myśli mówiąc: "Jeśli usuniesz skrypt polyfill, Twój kod będzie nadal działał, bez żadnych zmian wymaganych pomimo usunięcia polyfill ".
 13
Author: Richard Shepherd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 13:32:25