шайба
Если вы знакомы с шаблоном адаптера, то вы знаете, что такое прокладка. Shims перехватывает вызовы API и создает абстрактный слой между вызывающей стороной и целью. Обычно прокладки используются для обратной совместимости. Например ES5-регулировочная шайба пакет NPM позволит вам писать ECMAScript 5 синтаксис (ES5) и не волнует , если браузер работает ES5 или нет. Возьмите Date.now в качестве примера. Это новая функция в ES5, где синтаксис в ES3 будет новым Date (). GetTime () . Если вы используете ES5 тонкие прокладки вы можете написать Date.now и если браузер вы используете в опорах ES5 это будет просто работать. Однако, если браузер работает в ES3 двигатель ES5-прокладка будет перехватывать вызов Date.nowи просто вернуть новый Date (). getTime () вместо этого. Этот перехват называется шимминг. Соответствующий исходный код из es5-shim выглядит следующим образом:
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
Polyfill
Полифиллинг - это действительно специализированная версия шимминга. Polyfill - это реализация недостающих функций в API, в то время как шим не обязательно относится к реализации отсутствующих функций, чем к исправлению функций. Я знаю, что они кажутся слишком расплывчатыми, но там, где прокладки используются в качестве более широкого термина, polyfill используется для описания оболочек, которые обеспечивают обратную совместимость для старых браузеров. Таким образом, в то время как прокладки используются для сокрытия старых грехов, полифиллы используются для возврата будущих улучшений во времени.
Например, в IE7 нет поддержки sessionStorage, но полифилл в пакете sessionstorage npm добавит эту функцию в IE7 (и более ранние версии), используя такие методы, как хранение данных в свойстве name окна или использование файлов cookie.