HTML5'teki çoklu doldurmaların anlamı nedir?


387

HTML5'teki çoklu doldurmaların anlamı nedir? Bu kelimeyi HTML5 ile ilgili birçok sitede gördüm, örneğin HTML5-Cross-Browser-Polyfills.

Burada, HTML5 işlevlerini yerel olarak desteklemeyen tarayıcılara yerleştirmek için tüm şimleri, yedekleri ve çoklu dolguları topluyoruz.

Aslında çoklu dolguların ne anlama geldiğini anlamıyorum.

Yeni bir HTML5 tekniği mi yoksa bir JavaScript kitaplığı mı? HTML5'ten önce bu kelimeyi hiç duymadım.

Ve şimler, yedekler ve çoklu dolgular arasındaki fark nedir?


1
Daha iyi anlamak için blogları

@ user3400622 Bağlantı için teşekkürler, bağlantıdaki açıklama çok açık.
Andrew Lam

Yanıtlar:


377

Çoklu doldurma, JavaScript'te yapılan ve modern tarayıcılarda çalışmasını beklediğiniz işlevselliğin eski tarayıcılarda çalışmasını, örneğin eski tarayıcılarda tuvali (HTML5 özelliği) desteklemek için izin veren bir tarayıcı yedekidir.

HTML5 ile birlikte kullanıldığından bir tür HTML5 tekniğidir, ancak HTML5'in bir parçası değildir ve HTML5'e sahip olmadan çoklu doldurmalara sahip olabilirsiniz (örneğin, istediğiniz CSS3 tekniklerini desteklemek için).

İşte iyi bir gönderi:

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

Çoklu Dolgu ve Şimler'in kapsamlı bir listesi:

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


6
Yani ie7.js aynı zamanda çok amaçlı bir doludur
Jitendra Vyas

1
Evet: "PNG saydamlığı, CSS stilleri / seçicileri, işleme hatası düzeltmeleri vb. Dahil birçok düzeltme." Bu işlevi, tarayıcının henüz desteklemediği javascript aracılığıyla ekliyor.
Calvin Froedge

1
Bence Polyfills HTML5'ten sonra geldi. Shim, Çoklu Dolgulardan farklı mıdır?
Jitendra Vyas

16
Bir şim daha genelleştirilir. Bir çoklu dolgu bir tür şimdir. İşte iyi açıklayan bir soru: stackoverflow.com/questions/6599815/…
Calvin Froedge

6
remysharp.com/2010/10/08/what-is-a-polyfill bu bağlantı sadece bir "iyi yazı" dan daha fazlasıdır, aslında kelimenin tam tanımı ve kelimeyi oluşturan kişi tarafından kökeni. Alıntı: "Ürün Polyfilla (ABD'de spackling) çatlak ve delikleri kapatmak için duvarlara konabilen bir macundur." Yazı ayrıca, dolgudan önce gelen ve çok dolgudan farklı olan konsepti de kapsar. Bu mutlaka okunmalı, IMO.
aaron-kodlama

64

Öncelikle, bir polifilin ne olmadığını açıklığa kavuşturalım: Bir çoklu dolgu, HTML5 Standardının bir parçası değildir. Bu bağlamlarda sık sık çoklu dolguların görüldüğünü görseniz bile, bir çoklu dolgu Javascript ile sınırlandırılmamıştır.

Çoklu dolgu terimi, "mevcut veya" modern "tarayıcılarda yerleşik olarak beklediğiniz bazı tarayıcılarda da çalışmasını beklediğiniz belirli işlevlere sahip olmanıza olanak tanıyan" bazı kodlara karşılık gelir.

Polifillerin kaynağı ve örneği burada:

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


31

Çoklu doldurma, geliştiricinin tarayıcının yerel olarak sağlamasını beklediğiniz teknolojiyi sağlayan bir kod (veya eklenti) parçasıdır.


2
İyi açıkladı.
Eugen Sunic

16

Bir polyfill bir takoz olan yerine bir takoz çağrı ile özgün çağrıyı.

Örneğin, navigator.mediaDevices nesnesini kullanmak istediğinizi, ancak tüm tarayıcıların bunu desteklemediğini varsayalım. Şunlar gibi kullanabileceğiniz bir dolgu sağlayan bir kütüphane hayal edebilirsiniz:

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

Bu durumda, orijinal nesneyi veya yöntemi kullanmak yerine açıkça bir şim çağırırsınız. Diğer yandan, çoklu dolgu orijinal nesnelerdeki nesneleri ve yöntemleri değiştirir.

Örneğin:

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

Kodunuzda, standart navigator.mediaDevices nesnesini kullanıyormuşsunuz gibi görünür. Ama gerçekten, poli dolgu (örnekte adaptör.js) bu nesneyi kendi nesnesiyle değiştirdi.

Onun yerini aldığı şim. Bu, özelliğin yerel olarak desteklenip desteklenmediğini algılar ve varsa kullanır veya yoksa diğer API'ları kullanarak etrafında çalışır.

Yani bir çoklu dolgu bir çeşit "şeffaf" şimdir. Remy Poly (bu terimi kullanan), " çoklu dolgu komut dosyasını kaldırırsanız, çoklu dolgu kaldırılsa bile herhangi bir değişiklik yapılmadan kodunuz çalışmaya devam eder " derken bunu kastediyordu .


9
şim nedir?
Oliver Watkins

3
@Oliver Watkins Adaptör desenine aşina iseniz, bir şimin ne olduğunu biliyorsunuzdur. Shims, API çağrılarını engeller ve arayan ile hedef arasında soyut bir katman oluşturur. Şimşekler geriye dönük uyumluluk için kullanılır
Anurag Ratna

@AnuragRatna Ben karışıklığı önlemek için 'kesişme' kullanmak olmaz .. Kesişme genellikle (şeffaf olarak) kesişen yani yani arayan bilmeden kodu ifade eder. Şimler sağlayan geriye dönük uyumluluk için API çağrıları
Quetesh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.