वेब घटक

वेब घटक सुविधाओं का एक समूह है जो वेब के लिए एक मानक घटक मॉडल प्रदान करता है एनकैप्सुलेशन (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) और व्यक्तिगत HTML तत्वों की अंतर  की अनुमति देना। वेब कंपोनेंट माइक्रोफ्रंटेंड बनाने का लोकप्रिय तरीका है।

वेब घटक बनाने के लिए उपयोग की जाने वाली प्राथमिक तकनीकों में शामिल हैं:
 * कस्टम तत्व
 * नए HTML तत्वों को परिभाषित करने के लिए एपीआई


 * छाया डोम
 * संपुटित DOM और स्टाइल, रचना के साथ


 * HTML टेम्प्लेट
 * HTML टुकड़े जो प्रस्तुत नहीं किए गए हैं, लेकिन जावास्क्रिप्ट के माध्यम से तत्काल होने तक संग्रहीत किए गए हैं

कस्टम तत्व
कस्टम तत्वों के दो भाग हैं: स्वायत्त कस्टम तत्व और अनुकूलित अंतर्निहित तत्व। स्वायत्त कस्टम तत्व HTML तत्व हैं जो मूल HTML तत्वों से पूरी तरह से अलग होते हैं; वे अनिवार्य रूप से कस्टम एलिमेंट्स अप्लिकेशन प्रोग्रामिंग अंतरफलक का उपयोग करके नीचे से ऊपर तक बनाए गए हैं। अनुकूलित अंतर्निर्मित तत्व वे तत्व हैं जो अपनी कार्यक्षमता का पुन: उपयोग करने के लिए मूल HTML तत्वों पर निर्मित होते हैं।

छाया डोम
शैडो DOM एक कार्यक्षमता है जो वेब ब्राउज़र को दस्तावेज़ ऑब्जेक्ट मॉडल तत्वों को मुख्य दस्तावेज़ DOM ट्री में डाले बिना प्रस्तुत करने की अनुमति देती है। यह डेवलपर और ब्राउज़र तक पहुँचने के बीच एक अवरोध पैदा करता है; डेवलपर शैडो DOM तक उसी तरह नहीं पहुंच सकता है जिस तरह से वे नेस्टेड तत्वों के साथ करते हैं, जबकि ब्राउज़र उस कोड को उसी तरह प्रस्तुत और संशोधित कर सकता है जैसे वह नेस्टेड तत्वों के साथ करता है। किसी विशेष तत्व के शैडो डोम के भीतर सीएसएस के दायरे का प्रभाव यह है कि HTML तत्वों को व्यापक शैली पत्रक शैलियों के लीक होने और उन तत्वों को प्रभावित करने के जोखिम के बिना एनकैप्सुलेट किया जा सकता है जिन्हें उन्हें प्रभावित नहीं करना चाहिए था। हालाँकि ये तत्व HTML और CSS के संबंध में संक्षिप्त हैं, फिर भी वे ऐसी घटनाओं को सक्रिय कर सकते हैं जिन्हें दस्तावेज़ में अन्य तत्वों द्वारा उठाया जा सकता है। किसी तत्व में स्कोप्ड सबट्री को छाया वृक्ष कहा जाता है। छाया वृक्ष जिस तत्व से जुड़ा होता है उसे छाया होस्ट कहा जाता है।

शैडो डोम को हमेशा किसी मौजूदा तत्व से जोड़ा जाना चाहिए, या तो इसे शाब्दिक तत्व के रूप में जोड़कर या स्क्रिप्ट (कंप्यूटर प्रोग्रामिंग) के माध्यम से। जावास्क्रिप्ट में, शैडो DOMs का उपयोग करके एक तत्व से जुड़े होते हैं.

HTML टेम्पलेट
HTML टेम्प्लेट HTML के उन हिस्सों को सम्मिलित करने का एक तरीका है जिन पर इच्छानुसार मुहर लगाई जाती है। HTML टेम्प्लेट का सिंटैक्स इस तरह दिखता है:

स्क्रिप्ट नहीं चलेंगी, और जो संसाधन टेम्पलेट के अंदर हैं उन्हें तब तक नहीं लाया जाएगा जब तक कि टेम्पलेट पर मुहर नहीं लग जाती।

ब्राउज़र समर्थन
वेब घटक सभी प्रमुख ब्राउज़रों के वर्तमान संस्करणों द्वारा समर्थित हैं। पुराने ब्राउज़रों के साथ बैकवर्ड संगतता जावास्क्रिप्ट-आधारित पॉलीफ़िल (प्रोग्रामिंग) का उपयोग करके कार्यान्वित की जाती है।

पुस्तकालय
ऐसी कई लाइब्रेरी हैं जो कस्टम तत्वों को बनाते समय अमूर्तता के स्तर को बढ़ाने के उद्देश्य से वेब घटकों पर बनाई गई हैं। इनमें से कुछ लाइब्रेरी हैं X-Tag, Slim.js, पॉलिमर (पुस्तकालय), .io/ बोसोनिक, Riot.js, सेल्सफोर्स लाइटनिंग वेब कंपोनेंट्स, DataFormsJS और टेलीपैथी

उपरोक्त सूची से, बोसोनिक, पॉलिमर, टेलीपैथी और डेटाफॉर्मजेएस, सभी तैयार घटक प्रदान करते हैं जो उपयोग के लिए निःशुल्क हैं। इन घटकों का परस्पर उपयोग किया जा सकता है क्योंकि ये सभी खुली वेब प्रौद्योगिकियों पर निर्मित हैं। जबकि बोसोनिक, पॉलिमर और डेटाफॉर्मजेएस में कहीं अधिक पूर्व-निर्मित घटक हैं। टेलीपैथी धातु के सबसे करीब है क्योंकि इसका एकमात्र ध्यान डेवलपर को आसानी से बनाए रखने वाले वेब घटकों को तेजी से बनाने में मदद करने पर है।

समुदाय
वेब कंपोनेंट इकोसिस्टम के लिए कई सामुदायिक प्रयास हैं। WebComponents.org किसी भी मौजूदा वेब घटक, हर जगह कस्टम तत्वों को खोजने के लिए एक इंटरफ़ेस प्रदान करता है यह सत्यापित करता है कि लोकप्रिय फ्रंट-एंड फ्रेमवर्क संगत हैं और लंबित बग और उपलब्ध वर्कअराउंड के सेट के साथ वेब घटक मानक का उपयोग करने के लिए तैयार हैं। इसके अलावा, वाडिन ट्यूटोरियल इसमें एक समर्पित अनुभाग है जो दिखाता है कि उदाहरण डेमो ऐप्स और इसी तरह से संबंधित विषयों के साथ उन वर्कअराउंड का कुशलतापूर्वक उपयोग कैसे किया जाता है।

इतिहास
2011 में, फ्रंटियर्स कॉन्फ्रेंस में एलेक्स रसेल द्वारा पहली बार वेब कंपोनेंट्स पेश किए गए थे। 2013 में, Google द्वारा वेब कंपोनेंट्स पर आधारित एक लाइब्रेरी, पॉलिमर (लाइब्रेरी) जारी की गई थी।

2016 में, RequireJS को कस्टम तत्वों के लिए जावास्क्रिप्ट लाइब्रेरी और अतुल्यकालिक मॉड्यूल परिभाषा  लोडर प्लगइन के रूप में पेश किया गया था। 2017 में, Ionic (मोबाइल ऐप फ्रेमवर्क) टीम ने StensilJS बनाया, एक जावास्क्रिप्ट कंपाइलर जो वेब कंपोनेंट्स जेनरेट करता है। 2018 में, एंगुलर 6 ने एंगुलर एलिमेंट्स पेश किए जो आपको अपने एंगुलर घटकों को कस्टम वेब तत्वों के रूप में पैकेज करने की सुविधा देते हैं, जो वेब प्लेटफ़ॉर्म एपीआई के वेब घटकों के सेट का हिस्सा हैं। 2018 में, फ़ायरफ़ॉक्स 63 ने वेब कंपोनेंट्स समर्थन को डिफ़ॉल्ट रूप से सक्षम किया और उन्हें समर्थन देने के लिए डेवलपर टूल को अपडेट किया। 2018 में, LitElement को Google Chrome टीम द्वारा बड़े पॉलिमर (लाइब्रेरी) प्रोजेक्ट के हिस्से के रूप में विकसित किया गया था। लिटएलिमेंट को वेब घटकों को बनाने के लिए एक हल्के और उपयोग में आसान ढांचे के रूप में डिजाइन किया गया था।

बाहरी संबंध

 * Web Components Specifications WICG
 * WICG specifications
 * Web Components at MDN Web Docs
 * Browser Support for Custom Elements at Can I Use?
 * Custom Elements Everywhere - Framework Support for Custom Elements
 * Open Web Components
 * What are Web Components?
 * twoBirds
 * What are Web Components?
 * twoBirds