वेब घटक

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

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


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


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

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

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

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

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

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

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

पुस्तकालय
ऐसी कई लाइब्रेरी हैं जो कस्टम तत्वों को बनाते समय अमूर्तता के स्तर को बढ़ाने के उद्देश्य से वेब घटकों पर बनाई गई हैं। इनमें से कुछ लाइब्रेरी हैं 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