Яке значення поліфілів у HTML5?


387

Яке значення поліфілів у HTML5? Я бачив це слово на багатьох сайтах про HTML5, наприклад, HTML5-Cross-Browser-Polyfills.

Отож, тут ми збираємо всі лайни, резервні копії та поліфіли для того, щоб імплантувати функціональність HTML5 у браузерах, які не підтримують їх.

Я насправді не розумів, в чому сенс поліфілів.

Це нова техніка HTML5 чи бібліотека JavaScript? Я ніколи не чув цього слова перед HTML5.

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


1
Ви можете перевірити для кращого розуміння blogs.msdn.com/b/jennifer/archive/2011/08/04/…

@ user3400622 Дякую за посилання, пояснення у посиланні дуже зрозуміле.
Ендрю Лам

Відповіді:


377

Поліфайла - це резервна версія браузера, створена в JavaScript, яка дозволяє функціям, які, як ви очікуєте, працювати в сучасних браузерах, працювати в старих браузерах, наприклад, підтримувати полотно (функція HTML5) у старих браузерах.

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

Ось хороший пост:

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

Ось вичерпний перелік поліфілів та покриттів:

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


6
Так що середня ie7.js також є polyfill
Jitendra Віас

1
Так: "Багато виправлень, включаючи прозорість PNG, стилі / селектори CSS, виправлення помилок тощо". Це додає цю функціональність через javascript, який браузер ще не підтримує.
Calvin Froedge

1
Я думаю, що слово "Поліфузи" з'явилося після HTML5. Чи відрізняється Shim від поліфілів?
Житендра Вяс

16
Шім більш узагальнений. Поліфос - це тип прокладки. Ось питання , який пояснює це добре: stackoverflow.com/questions/6599815 / ...
Calvin Froedge

6
remysharp.com/2010/10/08/what-is-a-polyfill це посилання є більш ніж просто "добрий пост" - це фактично повне визначення та походження слова від людини, яка придумала це слово. Уривок: "продукт Polyfilla (шпаклювання в США) - це паста, яку можна нанести на стіни, щоб покрити тріщини і діри". У публікації також висвітлюється концепція, яка передує і відрізняється від полізаливу. Це обов'язково читати, ІМО.
кодування

64

Спочатку давайте роз’яснимо, що не є поліфілом: поліфіл не є частиною стандарту HTML5. Також поліфіл не обмежується Javascript, навіть якщо ви часто бачите, що в цих контекстах згадуються полісистеми.

Сам термін polyfill посилається на деякий код, який "дозволяє вам мати певну функціональність, яку ви очікуєте в поточних або" сучасних "браузерах, а також працювати в інших браузерах, які не мають вбудованої підтримки для цієї функції".

Джерело та приклад полізасипки тут:

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


31

Поліфайл - це фрагмент коду (або плагіна), який забезпечує технологію, яку ви, розробник, очікуєте, що браузер надасть вихідний текст.


2
Добре пояснено.
Eugen Sunic

16

Поліфос - це шим, який замінює вихідний дзвінок на виклик до шим.

Наприклад, скажіть, що ви хочете використовувати об’єкт navigator.mediaDevices, але це не всі браузери. Ви можете уявити собі бібліотеку, яка надає шрифт, який ви можете використовувати так:

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

У цьому випадку ви явно викликаєте shim, а не використовуєте оригінальний об'єкт або метод. З іншого боку, полісистема замінює об'єкти та методи на вихідні об'єкти.

Наприклад:

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

У вашому коді це виглядає так, ніби ви використовуєте стандартний об’єкт navigator.mediaDevices. Але насправді поліфіл (adapter.js у прикладі) замінив цей об’єкт власним.

Той, на який він його замінив, - це шим. Це дозволить виявити, чи функція підтримується в основному, і використовуватиме її, якщо вона є, або вона буде працювати навколо неї за допомогою інших API, якщо її немає.

Тож поліфіл - це свого роду "прозорий" прокладку. І саме це мав на увазі Ремі Шарп (який придумав цей термін), кажучи, " якщо ви видалили скрипт поліфункції, ваш код продовжуватиме працювати, без необхідних змін, незважаючи на те, що поліфіл не буде видалений ".


9
що таке лайка?
Олівер Уоткінс

3
@Oliver Watkins Якщо ви знайомі з схемою адаптера, знаєте, що таке лайка. Shims перехоплює виклики API і створює абстрактний шар між абонентом і ціллю. Зазвичай прокладки використовуються для зворотної сумісності
Anurag Ratna

@AnuragRatna Я б не використовував "перехоплення", щоб уникнути плутанини. Перехоплення зазвичай посилається на код, який (прозоро) перехоплює, тобто не знаючи, хто телефонує. Shims надають API-дзвінки для зворотної сумісності
Qetesh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.