layner
Adaptör desenine aşina iseniz, bir şimin ne olduğunu bilirsiniz. Shims, API çağrılarını engeller ve arayan ile hedef arasında soyut bir katman oluşturur. Tipik olarak şimler geriye dönük uyumluluk için kullanılır. Örneğin es5- shim npm paketi ECMAScript 5 (ES5) sözdizimini yazmanıza ve tarayıcının ES5 çalıştırıp çalıştırmadığına bakmanıza izin vermeyecektir. Date.now örnek olarak alın . Bu, ES5'teki yeni bir işlevdir; burada ES3'teki sözdizimi yeni Date (). GetTime () olur . Eğer kullanırsanız ES5-şim yazabilir Date.now ve desteklerin çalışan olduğunuz tarayıcı ES5 eğer sadece çalışacaktır. Ancak, tarayıcı çalışıyorsa ES3 motoru es5- shim Date.now çağrısını keser.ve bunun yerine yeni Date (). getTime () döndürün . Bu müdahaleye shimming denir. Es5-shim'in ilgili kaynak kodu şuna benzer:
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
polyfill
Çoklu doldurma gerçekten sadece shimming'un özel bir versiyonudur. Polyfill, bir API'de eksik özelliklerin uygulanmasıyla ilgilidir, ancak bir şim, özelliklerin düzeltilmesi ile ilgili olarak eksik özelliklerin uygulanmasıyla ilgili olmayabilir. Bunların aşırı belirsiz göründüğünü biliyorum, ancak şimler daha geniş bir terim olarak kullanıldığında, daha eski tarayıcılar için geriye dönük uyumluluk sağlayan şimleri tanımlamak için çok dolgu kullanılır. Şimler eski günahları örtmek için şimler kullanılırken, gelecekteki geliştirmeleri zaman içinde geri getirmek için çoklu dolgular kullanılır.
Örnek olarak IE7'de sessionStorage için destek yoktur, ancak sessionstorage npm paketindeki çoklu dolgu, bu özelliği IE7'de (ve daha eski) pencerenin name özelliğinde veri depolamak veya çerezler kullanmak gibi teknikler kullanarak ekler.