परत
यदि आप एडेप्टर पैटर्न से परिचित हैं, तो आप जानते हैं कि शिम क्या है। शिम्स एपीआई कॉल को इंटरसेप्ट करता है और कॉलर और लक्ष्य के बीच एक अमूर्त परत बनाता है। आमतौर पर शिमर्स का इस्तेमाल पिछड़े कंपटीशन के लिए किया जाता है। उदाहरण के लिए es5-shim npm पैकेज आपको ECMAScript 5 (ES5) सिंटैक्स लिखने देगा और परवाह नहीं करेगा कि ब्राउज़र ES5 चल रहा है या नहीं। उदाहरण के तौर पर Date.now को लें । यह ES5 में एक नया फ़ंक्शन है जहां ES3 में सिंटैक्स नई तिथि () होगा। गेटटाइम () । यदि आप es5-shim का उपयोग करते हैं तो आप Date.now लिख सकते हैं और यदि आप जिस ब्राउज़र को ES5 के समर्थन में चला रहे हैं, वह बस चलेगा। हालाँकि, यदि ब्राउज़र ES3 इंजन es5-shim चला रहा है, तो Date.now को कॉल इंटरसेप्ट करेगाऔर इसके बदले नई तारीख () प्राप्त करें । इस अवरोधन को शाइनिंग कहा जाता है। Es5-shim से संबंधित स्रोत कोड इस तरह दिखता है:
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
polyfill
पॉलिफ़िलिंग वास्तव में चमक का एक विशेष संस्करण है। पॉलीफ़िल एक एपीआई में लापता सुविधाओं को लागू करने के बारे में है, जबकि एक शिम आवश्यक रूप से लापता सुविधाओं को लागू करने के बारे में नहीं होगा क्योंकि यह सुविधाओं को ठीक करने के बारे में है। मुझे पता है कि ये अत्यधिक अस्पष्ट लगते हैं, लेकिन जहां शिम का उपयोग अधिक व्यापक शब्द के रूप में किया जाता है, पॉलीफिल का उपयोग उन शिमों का वर्णन करने के लिए किया जाता है जो पुराने ब्राउज़रों के लिए पिछड़ेपन को प्रदान करते हैं। इसलिए जबकि पुराने पापों को ढंकने के लिए शिम का उपयोग किया जाता है, भविष्य में समय में वृद्धि लाने के लिए पॉलीफिल का उपयोग किया जाता है।
एक उदाहरण के रूप में वहाँ IE7 में sessionStorage लिए कोई समर्थन नहीं है, लेकिन में polyfill sessionstorage NPM पैकेज खिड़की के नाम संपत्ति में डेटा संग्रहीत की तरह तकनीकों का उपयोग करके या कुकीज़ का उपयोग करके IE7 (और पुराने) में इस सुविधा को जोड़ देगा।