Polyfill (programming)
सॉफ्टवेयर विकास में, एक पॉलीफिल कोड है जो विकास वातावरण की एक विशेषता को लागू करता है जो मूल रूप से सुविधा का समर्थन नहीं करता है। अक्सर, यह एक जावास्क्रिप्ट पुस्तकालय को संदर्भित करता है जो एक एच. टी. एम. एल. 5 या सी. एस. एस. वेब मानक को लागू करता है, या तो पुराने ब्राउज़रों पर एक स्थापित मानक (कुछ ब्राउज़रों द्वारा समर्थित), या मौजूदा ब्राउज़रों पर एक प्रस्तावित मानक (किसी भी ब्राउज़र द्वारा समर्थित नहीं)। पॉलीफिल का उपयोग पी. एच. पी. और पायथन में भी किया जाता है। औपचारिक रूप से, "एक पॉलीफिल एक ब्राउज़र एपीआई के लिए एक सिम है"। पॉलीफिल वेब डेवलपर्स को एक एपीआई का उपयोग करने की अनुमति देता है, भले ही यह ब्राउज़र द्वारा समर्थित हो या नहीं, और आमतौर पर न्यूनतम ओवरहेड के साथ। आमतौर पर वे पहले जांच करते हैं कि क्या कोई ब्राउज़र एक एपीआई का समर्थन करता है, और यदि उपलब्ध हो तो इसका उपयोग करते हैं, अन्यथा अपने स्वयं के कार्यान्वयन का उपयोग करते हैं। पॉलीफिल स्वयं अन्य, अधिक समर्थित सुविधाओं का उपयोग करते हैं, और इस प्रकार विभिन्न ब्राउज़रों के लिए अलग-अलग पॉलीफिल की आवश्यकता हो सकती है। इस शब्द का उपयोग एक क्रिया के रूप में भी किया जाता हैः पॉलीफिलिंग एक विशेषता के लिए एक पॉलीफिल प्रदान कर रहा है। परिभाषा यह शब्द एक नया शब्द है, जिसे रेमी शार्प द्वारा गढ़ा गया था, जिसके लिए एक ऐसे शब्द की आवश्यकता थी जिसका अर्थ था "जावास्क्रिप्ट (या फ्लैश या जो कुछ भी) का उपयोग करके एक एपीआई को दोहराना यदि ब्राउज़र में यह मूल रूप से नहीं है" 2009 में इंट्रोड्यूसिंग एचटीएमएल5 पुस्तक का सह-लेखन करते समय। औपचारिक रूप से, "एक शिम एक पुस्तकालय है जो केवल उस वातावरण के साधनों का उपयोग करके एक पुराने वातावरण में एक नया एपीआई लाता है।" पॉलीफिल इस परिभाषा के बिल्कुल अनुरूप है; शिम शब्द का उपयोग प्रारंभिक पॉलीफिल के लिए भी किया जाता था। हालांकि, शार्प शिम के लिए गैर-पारदर्शी एपीआई और वर्कअराउंड, जैसे कि लेआउट के लिए स्पेसर जीआईएफ, जिन्हें कभी-कभी shim.gif के रूप में जाना जाता है, और प्रगतिशील वृद्धि और सुंदर क्षरण जैसे समान शब्द उपयुक्त नहीं थे, इसलिए उन्होंने एक नए शब्द का आविष्कार किया। यह शब्द बहुउद्देशीय भरने वाले पेस्ट ब्रांड पॉलीफिला पर आधारित है, एक पेस्ट जिसका उपयोग दीवारों में दरारों और छेदों को ढकने के लिए किया जाता है, और इसका अर्थ है "कई (पॉली-) तरीकों से छेद (कार्यक्षमता में) भरना"। इस शब्द ने तब से लोकप्रियता हासिल की है, विशेष रूप से पॉल आयरिश और मॉडर्निज़र प्रलेखन में इसके उपयोग के कारण। शार्प जो अंतर करता है वह यह हैः यह अंतर अन्य लेखकों द्वारा नहीं खींचा गया है। कभी-कभी शिम्स, पॉलीफिल और फॉलबैक के बीच कई अन्य अंतर किए जाते हैं, लेकिन आम तौर पर कोई स्वीकृत अंतर नहीं हैंः अधिकांश पॉलीफिल को शिम्स का एक रूप मानते हैं। पॉलीफिलर शब्द भी कभी-कभी पाया जाता है। उदाहरण कोर-जेएस कोर-जेएस सबसे लोकप्रिय जावास्क्रिप्ट मानक पुस्तकालय पॉलीफिल में से एक है। मानक के नवीनतम संस्करण तक ईसीएमएस्क्रिप्ट के लिए पॉलीफिल शामिल हैंः वादे, प्रतीक, संग्रह, पुनरावृत्ति, टाइप किए गए सरणी, कई अन्य सुविधाएँ, ईसीएमएस्क्रिप्ट प्रस्ताव, कुछ क्रॉस-प्लेटफ़ॉर्म डब्ल्यूएचएटीडब्ल्यूजी/डब्ल्यू3सी सुविधाएँ और यूआरएल जैसे प्रस्ताव। आप केवल आवश्यक सुविधाओं को लोड कर सकते हैं या वैश्विक नेमस्पेस प्रदूषण के बिना इसका उपयोग कर सकते हैं। इसे बेबल के साथ एकीकृत किया जा सकता है, जो इसे स्वचालित रूप से आपके कोड में आवश्यक कोर-जेएस मॉड्यूल को इंजेक्ट करने की अनुमति देता है। एच. टी. एम. एल. 5 शिव 9 से पहले के आई. ई. संस्करणों में, अज्ञात एच. टी. एम. एल. तत्वों को खाली तत्वों के रूप में पार्स किया जाएगा, जिससे पृष्ठ की घोंसले की संरचना टूट जाएगी और उन तत्वों को सी. एस. एस. का उपयोग करके स्टाइल करना असंभव हो जाएगा। सबसे व्यापक रूप से उपयोग किए जाने वाले पॉलीफिल में से एक, एच. टी. एम. एल. 5शिव, इस बग के आसपास काम करने के लिए आई. ई. की एक और विचित्रता का फायदा उठाता हैः प्रत्येक नए एच. टी. एम. एल. 5 तत्व के लिए document.createElement ("टैगनेम") कॉल करना, जो आई. ई. को उन्हें सही ढंग से विश्लेषित करने का कारण बनता है। इसमें उन एच. टी. एम. एल. 5 तत्वों के लिए बुनियादी डिफ़ॉल्ट शैली भी शामिल है। - उपसर्ग-मुक्त हालांकि अधिकांश पॉलीफिल पुराने ब्राउज़रों को लक्षित करते हैं, कुछ आधुनिक ब्राउज़रों को थोड़ा और आगे बढ़ाने के लिए मौजूद हैं। ली वेरू का-उपसर्ग-मुक्त पॉलीफिल एक ऐसा पॉलीफिल है, जो वर्तमान ब्राउज़रों को विकासकर्ता को सभी विक्रेता उपसर्गों को लिखने की आवश्यकता के बजाय कई सीएसएस3 गुणों के अनिर्धारित संस्करणों को पहचानने की अनुमति देता है। यह पृष्ठ की स्टाइलशीट को पढ़ता है और किसी भी पूर्वनिर्धारित गुणों को वर्तमान ब्राउज़र द्वारा मान्यता प्राप्त उनके पूर्वनिर्धारित समकक्षों के साथ बदल देता है। सेलेक्टिविजर कीथ क्लार्क का सेलेक्टिविजर एक लोकप्रिय पॉलीफिल है जो कई सी. एस. एस. 3 चयनकर्ताओं को आई. ई. 8 और उससे नीचे काम करने के लिए प्रेरित करता है। यह कई ज्ञात सीएसएस3 चयनकर्ताओं की तलाश में पृष्ठ की स्टाइलशीट को पढ़ता है, फिर उन चयनकर्ताओं से मेल खाने वाले तत्वों के लिए दस्तावेज़ से पूछताछ करने के लिए एक जावास्क्रिप्ट चयनकर्ता पुस्तकालय का उपयोग करता है, शैलियों को सीधे उन तत्वों पर लागू करता है। यह कई जावास्क्रिप्ट चयनकर्ता पुस्तकालयों जैसे जेक्वेरी का समर्थन करता है। फ्लेक्सी संभवतः सीएसएस3 की सबसे प्रत्याशित विशेषताओं में से एक है, फ्लेक्सिबल बॉक्स लेआउट (उर्फ। फ्लेक्सबॉक्स) इंटरफेस तत्वों को तैयार करने के लिए एक अत्यंत शक्तिशाली उपकरण होने का वादा करता है। वेबकिट और मोज़िला इंजनों ने वर्षों से प्रारंभिक प्रारूप वाक्यविन्यास का समर्थन किया है। फ्लेक्सी आई. ई. और ओपेरा में उसी वाक्यविन्यास के लिए समर्थन लागू करता है। हालाँकि, मसौदा विशिष्टता में एक नए (और बहुत अधिक शक्तिशाली) वाक्यविन्यास में भारी संशोधन किया गया है, जो अभी तक फ्लेक्सी द्वारा समर्थित नहीं है। फ्लेक्सी का उपयोग अभी भी पुराने वाक्यविन्यास के साथ किया जा सकता है, लेकिन विकासकर्ता को यह सुनिश्चित करना होगा कि वे भविष्य के ब्राउज़रों के लिए भी नए वाक्यविन्यास को शामिल करें। सी. एस. एस. 3 पी. आई. ई. पी. आई. ई. ("प्रोग्रेसिव इंटरनेट एक्सप्लोरर") आई. ई. में कुछ सबसे लोकप्रिय लापता सी. एस. एस. 3 बॉक्स सजावट गुणों को लागू करता है, जिसमें आई. ई. 8 और उससे नीचे के लिए सीमा-त्रिज्या और बॉक्स-छाया और आई. ई. 9 और उससे नीचे के लिए रैखिक-ढाल पृष्ठभूमि शामिल हैं। एचटीसी व्यवहार (एक स्वामित्व आई. ई. सुविधा) के रूप में प्रयुक्त, यह विशिष्ट तत्वों पर असमर्थित सी. एस. एस. 3 गुणों की तलाश करता है और आई. ई. 6-8 के लिए वी. एम. एल. और आई. ई. 9 के लिए एस. वी. जी. का उपयोग करके उन गुणों को प्रस्तुत करता है। इसका प्रतिपादन ज्यादातर देशी ब्राउज़र कार्यान्वयन से अप्रभेद्य है और यह गतिशील डी. ओ. एम. संशोधन को अच्छी तरह से संभालता है। जे. एस. ओ. एन. 2 डगलस क्रॉकफोर्ड ने मूल रूप से अपने जे. एस. ओ. एन. डेटा प्रारूप को पढ़ने और लिखने के लिए एक ए. पी. आई. के रूप में json2.js लिखा था। यह इतना व्यापक रूप से उपयोग किया जाने लगा कि ब्राउज़र विक्रेताओं ने इसके एपीआई को मूल रूप से लागू करने और इसे एक वास्तविक मानक में बदलने का फैसला किया; चूंकि json2.js अब पुराने ब्राउज़रों में नए ब्राउज़रों के लिए मूल सुविधाओं को लागू करता है, यह एक पुस्तकालय के बजाय एक पॉलीफिल बन गया है। ई. एस. 5-शिम ई. सी. एम. ए. स्क्रिप्ट 5वां संस्करण ("ई. एस. 5") कुछ उपयोगी नई स्क्रिप्टिंग सुविधाएँ लाता है, और चूंकि वे पुराने जावास्क्रिप्ट इंजनों के साथ वाक्यात्मक रूप से संगत हैं, इसलिए उन्हें ज्यादातर अंतर्निहित जे. एस. वस्तुओं पर पैचिंग विधियों द्वारा पॉलीफिल किया जा सकता है। यह ईएस5-शिम पॉलीफिल इसे दो भागों में करता हैः es5-shim.js में वे विधियाँ शामिल हैं जिन्हें पूरी तरह से पॉलीफिल किया जा सकता है, और es5-sham.js में अन्य विधियों के आंशिक कार्यान्वयन शामिल हैं जो सटीक रूप से काम करने के लिए अंतर्निहित इंजन पर बहुत अधिक निर्भर करते हैं। फ्लैशकैनवास एडोब फ्लैश प्लग-इन का उपयोग करके एच. टी. एम. एल. 5 कैनवास ए. पी. आई. का एक कार्यान्वयन है। एक दुर्लभ वाणिज्यिक पॉलीफिल, यह एक सशुल्क संस्करण के साथ-साथ एक मुफ्त संस्करण में आता है, जिसमें छाया जैसी कुछ उन्नत सुविधाओं का अभाव है। MediaElement.js जॉन डायर का MediaElement.js फ्लैश या सिल्वरलाइट प्लग-इन का उपयोग करके पुराने ब्राउज़रों में एच. टी. एम. एल. 5 मीडिया एलिमेंट ए. पी. आई. सहित <वीडियो> और <ऑडियो> तत्वों के लिए पॉलीफिल समर्थन करता है। यह उन तत्वों के लिए एक वैकल्पिक मीडिया प्लेयर यू. आई. भी प्रदान करता है, जो सभी ब्राउज़रों में सुसंगत है। मोज़िला द्वारा प्रस्तावित ब्राउज़र आई. डी. प्रमाणीकरण प्रोटोकॉल, कर्षण प्राप्त करने में विफल रहा। वेबशिम्स लिब अलेक्जेंडर फारकास की वेबशिम्स लिब कई अन्य पॉलीफिल को एक साथ एक ही पैकेज में एकत्रित करती है और सशर्त रूप से केवल उन लोगों को लोड करती है जिनकी यात्रा करने वाले ब्राउज़र को आवश्यकता होती है। Hyphenopoly.js Hyphenopoly.js स्वचालित हाइफ़नेशन को सक्षम करता है यदि यह पहले से ही संबंधित दस्तावेज़ भाषा के लिए ब्राउज़र द्वारा समर्थित नहीं है। एडाप्टर पैटर्न शिम (कंप्यूटिंग) रैपर लाइब्रेरी एडाप्टिव वेब डिज़ाइन बैकवर्ड कम्पेटिबिलिटी नोट्स संदर्भ बाहरी लिंक कम्पेटिबिलिटी लेयर वेब ब्राउज़र उत्तरदायी वेब डिज़ाइन वेब डेवलपमेंट