Oba wydają się być używane w kręgach programistycznych, patrz np. HTML5 Cross Browser Polyfills , który mówi:
Więc tutaj zbieramy wszystkie podkładki, awarie i wypełnienia ...
Lub istnieje projekt es5-shim .
W moim obecnym projekcie korzystamy z wielu z nich i chcę je wszystkie umieścić w tym samym katalogu. Jak mam nazwać ten katalog --- shims
lub polyfills
?
terminology
naming
vocabulary
polyfills
shim
Domenic
źródło
źródło
Odpowiedzi:
Podkładkę jakikolwiek fragment kodu wykonuje przechwycenie wywołania API i zawiera warstwę abstrakcji. Niekoniecznie ogranicza się do aplikacji internetowej lub HTML5 / CSS3.
Polyfill to rodzaj podkładki że modernizacja starszych przeglądarek z nowoczesnym HTML5 / CSS3 funkcje zwykle przy użyciu JavaScript lub Flash.
Odpowiadając na konkretne pytanie, zadzwoń do swojego katalogu,
shims
jeśli chcesz zachować ogólny katalog.źródło
Podkładka
Jeśli znasz wzór adaptera, wiesz, czym jest podkładka dystansowa. Podkładki przechwytują połączenia API i tworzą warstwę abstrakcyjną między dzwoniącym a celem. Zazwyczaj podkładki dystansowe są używane dla kompatybilności wstecznej. Na przykład pakiet npm esim-shim pozwoli ci napisać składnię ECMAScript 5 (ES5) i nie będzie miało znaczenia, czy przeglądarka działa na ES5, czy nie. Jako przykład weź Date.now . Jest to nowa funkcja w ES5, w której składnią w ES3 będzie nowa Date (). GetTime () . Jeśli używasz podkładki es5 , możesz napisać Date.now i jeśli przeglądarka, w której korzystasz, obsługuje ES5, po prostu uruchomi się. Jeśli jednak w przeglądarce działa silnik ES3 , es5-shim przechwyci połączenie do Date.nowi zamiast tego zwracamy nową Date (). getTime () . To przechwycenie nazywa się shimmingiem. Odpowiedni kod źródłowy z es5-shim wygląda następująco:
Polyfill
Polyfilling to tak naprawdę tylko specjalna wersja shimingu. Polyfill polega na implementowaniu brakujących funkcji w interfejsie API, podczas gdy podkładka niekoniecznie musi dotyczyć zarówno implementacji brakujących funkcji, jak i poprawiania funkcji. Wiem, że wydaje się to zbyt niejasne, ale tam, gdzie podkładki są używane jako szerszy termin, polyfill jest używany do opisywania podkładek, które zapewniają wsteczną kompatybilność dla starszych przeglądarek. Podczas gdy podkładki są używane do zakrycia starych grzechów, wypełniacze są używane do przywrócenia przyszłych ulepszeń w czasie. Jako przykład nie ma obsługi sessionStorage w IE7, ale funkcja wypełniania w pakiecie npm sessionstorage doda tę funkcję w IE7 (i starszych) za pomocą technik takich jak przechowywanie danych we właściwości nazwy okna lub ciasteczka.
źródło
MyShim.Date.now();
Proszę mnie poprawić, jeśli się mylę.Z tego co rozumiem:
Wielokrotne wypełnienie to kod, który wykrywa brak określonego „oczekiwanego” interfejsu API i ręcznie go implementuje. Na przykład
Podkładka dystansowa to kod, który przechwytuje istniejące wywołania interfejsu API i realizuje różne zachowania. Chodzi tutaj o znormalizowanie niektórych interfejsów API w różnych środowiskach. Jeśli więc dwie przeglądarki inaczej implementują ten sam interfejs API, możesz przechwytywać wywołania interfejsu API w jednej z tych przeglądarek i dopasowywać jego zachowanie do drugiej przeglądarki. Lub, jeśli przeglądarka ma błąd w jednym z interfejsów API, możesz ponownie przechwycić wywołania tego interfejsu API, a następnie obejść błąd.
źródło
Powołując się na Axela Rauschmayera z jego książki Speaking JavaScript :
źródło
Podkładka. Podkładka dystansowa to biblioteka, która wprowadza nowy interfejs API do starszego środowiska, używając tylko środków tego środowiska.
Polyfill. W październiku 2010 roku Remy Sharp napisał na blogu o nazwie „polyfill” [przez Ricka Waldrona]:
Wielokrotne wypełnienie to fragment kodu (lub wtyczki), który zapewnia technologię, którą Ty, deweloper, oczekujesz od przeglądarki w sposób natywny. Spłaszczanie interfejsu API, jeśli chcesz.
źródło
Fantastyczny artykuł napisany na ten temat sprzed kilku lat, który dobrze to wyjaśnia:
Co to jest Polyfill?
W artykule (2) są po prostu przeciwstawione jako takie:
Shim: fragment kodu, który możesz dodać (tj.
JavaScript
), Który naprawiłby niektóre funkcje, ale najczęściej miałby własne API .Wielokrotne wypełnianie: coś, w co można wpaść (tj.
JavaScript
), I po cichu działałoby naśladować istniejące interfejsy API przeglądarki , które w innym przypadku nie byłyby obsługiwane.źródło
shim.gif
). Bardzo nie dyktuje, aby używać tych słów w ten sposób, a mówiąc „do mnie” milcząco przyznaje, że jego użycie nie jest uniwersalne.