HTML5 में पॉलीफ़िल का क्या अर्थ है?


387

HTML5 में पॉलीफ़िल का क्या अर्थ है? मैंने इस शब्द को HTML5, उदाहरण के लिए HTML5-Cross-Browser-Polyfills के बारे में कई साइटों में देखा

तो यहाँ हम उन सभी शिम, फालबैक और पॉलीफ़िल को एकत्रित कर रहे हैं, जो उन ब्राउज़रों में HTML5 कार्यक्षमता को आरोपित करने के लिए हैं, जो मूल रूप से उनका समर्थन नहीं करते हैं।

मैं वास्तव में समझ नहीं पाया कि पॉलीफिल्स का अर्थ क्या है।

यह एक नई HTML5 तकनीक या एक जावास्क्रिप्ट पुस्तकालय है? मैंने इस शब्द को एचटीएमएल 5 से पहले कभी नहीं सुना था।

और शिम, फालबैक और पॉलीफिल के बीच अंतर क्या है?


1
आप बेहतर समझ के लिए जाँच कर सकते हैं blogs.msdn.com/b/jennifer/archive/2011/08/04/…

@ user3400622 लिंक के लिए धन्यवाद, लिंक में स्पष्टीकरण बहुत स्पष्ट है।
एंड्रयू लैम

जवाबों:


377

एक पॉलीफ़िल एक ब्राउज़र फॉलबैक है, जिसे जावास्क्रिप्ट में बनाया गया है, जो पुराने ब्राउज़रों में कैनवास (एचटीएमएल 5 फीचर) का समर्थन करने के लिए पुराने ब्राउज़रों में काम करने के लिए आधुनिक ब्राउज़रों में काम करने की उम्मीद करता है।

यह 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 एक पॉलीफ़िल भी है
जितेंद्र व्यास

1
हां: "पीएनजी पारदर्शिता, सीएसएस शैलियों / चयनकर्ताओं सहित कई सुधार, बग फिक्स प्रदान करना," यह जावास्क्रिप्ट के माध्यम से इस कार्यक्षमता को जोड़ रहा है जो ब्राउज़र पहले से ही समर्थन नहीं करता है।
केल्विन फ्रेजे

1
मुझे लगता है कि HTML5 के बाद पॉलीफ़िल शब्द आया। क्या शिम पॉलीफ़िल से अलग है?
जितेंद्र व्यास

16
एक शिम अधिक सामान्यीकृत है। एक पॉलीफिल एक प्रकार का शिम है। यहाँ एक प्रश्न है जो इसे अच्छी तरह से समझाता है: stackoverflow.com/questions/6599815/…
केल्विन फ्रेज

6
remysharp.com/2010/10/08/what-is-a-polyfill यह लिंक सिर्फ एक "अच्छी पोस्ट" से अधिक है यह वास्तव में उस व्यक्ति द्वारा शब्द की पूरी परिभाषा और उत्पत्ति है जिसने शब्द को गढ़ा था। अंश: "उत्पाद Polyfilla (अमेरिका में spackling) एक पेस्ट है जिसे दरारें और छेद को कवर करने के लिए दीवारों में डाला जा सकता है।" पोस्ट उस अवधारणा को भी कवर करती है जो शिम पूर्ववर्ती है और पॉलीफिल से अलग है। यह एक पढ़ा जाना चाहिए, IMO।
अरोन-कोडिंग

64

सबसे पहले आइए स्पष्ट करें कि पॉलीफ़िल क्या नहीं है: एक पॉलीफ़िल एचटीएमएल 5 मानक का हिस्सा नहीं है। न ही एक पॉलीफिल जावास्क्रिप्ट तक सीमित है, भले ही आप अक्सर पॉलीफ़िल को उन संदर्भों में संदर्भित करते हुए देखते हैं।

पॉलीफ़िल शब्द कुछ कोड को संदर्भित करता है जो "आपको कुछ विशिष्ट कार्यक्षमता प्रदान करने की अनुमति देता है जो आप वर्तमान या" आधुनिक "ब्राउज़रों में भी अन्य ब्राउज़रों में काम करने की अपेक्षा करते हैं जिनके पास उस कार्यक्षमता के लिए समर्थन नहीं है।"

पॉलीफ़िल का स्रोत और उदाहरण यहाँ:

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


31

एक पॉलीफ़िल कोड (या प्लगइन) का एक टुकड़ा है जो आपको वह तकनीक प्रदान करता है जिसे आप, डेवलपर, ब्राउज़र को मूल रूप से प्रदान करने की अपेक्षा करते हैं।


2
अच्छी तरह से समझाया गया।
यूजेन सोनिक

16

एक पॉलीफ़िल एक शिम है जो कॉल के साथ मूल कॉल को एक शिम के साथ बदल देता है।

उदाहरण के लिए, मान लें कि आप navigator.mediaDevices ऑब्जेक्ट का उपयोग करना चाहते हैं, लेकिन सभी ब्राउज़र इसका समर्थन नहीं करते हैं। आप एक पुस्तकालय की कल्पना कर सकते हैं जो एक शिम प्रदान करता है जिसे आप इस तरह उपयोग कर सकते हैं:

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

इस मामले में, आप मूल वस्तु या विधि का उपयोग करने के बजाय स्पष्ट रूप से एक शिम बुला रहे हैं। दूसरी ओर, पॉलीफ़िल, वस्तुओं और विधियों को मूल वस्तुओं पर बदल देता है।

उदाहरण के लिए:

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

आपके कोड में, ऐसा लगता है जैसे आप मानक नेविगेटर का उपयोग कर रहे हैं। लेकिन वास्तव में, पॉलीफ़िल (उदाहरण में एडेप्टर) इस ऑब्जेक्ट को अपने स्वयं के साथ बदल दिया है।

इसने इसे बदल दिया है। यह पता लगाएगा कि क्या सुविधा मूल रूप से समर्थित है और यदि यह है तो इसका उपयोग करें, या यदि यह नहीं है तो अन्य एपीआई का उपयोग करके इसके चारों ओर काम करेगा।

तो एक पॉलीफिल एक प्रकार का "पारदर्शी" शिम है। और यह वही है जो रेमी शार्प (जिसने शब्द को गढ़ा है) का मतलब है जब " यदि आपने पॉलीफ़िल स्क्रिप्ट को हटा दिया है, तो आपका कोड काम करना जारी रखेगा, बिना किसी बदलाव के पॉलीफ़िल को हटाए जाने की आवश्यकता होती है" "।


9
शिम क्या है?
ओलिवर वाटकिंस

3
@ ओलिवर वॉटकिंस यदि आप एडॉप्टर पैटर्न से परिचित हैं, तो आप जानते हैं कि शिम क्या है। शिम्स एपीआई कॉल को इंटरसेप्ट करता है और कॉलर और लक्ष्य के बीच एक अमूर्त परत बनाता है। आमतौर पर शिम का उपयोग पिछड़ी संगतता के लिए किया जाता है
अनुराग रत्न

@AnuragRatna भ्रम से बचने के लिए मैं 'इंटरसेप्ट' का उपयोग नहीं करूंगा .. इंटरसेप्ट आमतौर पर कोड को संदर्भित करता है (पारदर्शी रूप से) यानी बिना कॉलर को जाने। शिम्स प्रदान पिछली संगतता के लिए API कॉल
Qetesh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.