एक Ember.View वर्तमान में W3C द्वारा आपके लिए बनाए गए टैग तक सीमित है। लेकिन अगर आप अपने स्वयं के एप्लिकेशन-विशिष्ट HTML टैग को परिभाषित करना चाहते हैं और फिर जावास्क्रिप्ट का उपयोग करके उनके व्यवहार को लागू करते हैं? आप वास्तव में Ember.View के साथ ऐसा नहीं कर सकते ।
ठीक यही घटक आपको करते हैं। वास्तव में, यह इतना अच्छा विचार है कि वर्तमान में W3C कस्टम एलिमेंट्स की युक्ति पर काम कर रहा है ।
एम्बर के घटकों का कार्यान्वयन वेब घटक विनिर्देशन के जितना संभव हो सके उतना निकटता से करने की कोशिश करता है। एक बार कस्टम तत्व ब्राउज़रों में व्यापक रूप से उपलब्ध होने के बाद, आपको अपने Ember घटकों को W3C मानक पर आसानी से स्थानांतरित करने में सक्षम होना चाहिए और उन्हें अन्य फ्रेमवर्क द्वारा उपयोग करने योग्य होना चाहिए और साथ ही नए मानक को अपनाया है।
यह हमारे लिए इतना महत्वपूर्ण है कि हम मानकों के साथ मिलकर काम कर रहे हैं ताकि यह सुनिश्चित हो सके कि हमारे घटकों का कार्यान्वयन वेब प्लेटफॉर्म के रोडमैप से मेल खाता है।
यह भी ध्यान रखना महत्वपूर्ण है कि एक Ember.Component वास्तव में एक Ember.View (एक उपवर्ग) है लेकिन वह पूरी तरह से अलग है । इसके टेम्प्लेट्स में प्रॉपर्टी एक्सेस व्यू ऑब्जेक्ट पर जाती है और एक्शन व्यू ऑब्जेक्ट पर भी लक्षित होते हैं । आसपास context
या बाहरी controller
सभी संदर्भ संबंधी जानकारी तक पहुँच नहीं है , जो कि Ember.View के साथ ऐसा नहीं है, जिसके पास वास्तव में इसके आसपास के नियंत्रक तक पहुंच है, उदाहरण के लिए एक दृश्य के अंदर आप ऐसा कुछ कर सकते हैं this.get('controller')
जो आपको प्रदान करेगा। नियंत्रक वर्तमान में दृश्य के साथ जुड़ा हुआ है।
तो एक दृश्य और एक घटक के बीच मुख्य अंतर क्या है?
तो, उस घटक के अलावा मुख्य अंतर आपको अपने स्वयं के टैग बनाने देता है और भविष्य में किसी बिंदु पर जब कस्टम तत्व उपलब्ध होते हैं, उन घटकों को अन्य रूपरेखाओं में माइग्रेट / उपयोग करते हैं जो कस्टम तत्वों का समर्थन करेंगे, वास्तव में यह है कि किसी बिंदु पर एक एम्बर घटक विशिष्ट कार्यान्वयन मामले के आधार पर कुछ हद तक अप्रचलित हो जाएगा।
और एक सामान्य उदाहरण क्या होगा जहां मैं एक घटक पर एक दृश्य का उपयोग करना पसंद करूंगा और इसके विपरीत?
उपरोक्त का पालन करना आपके उपयोग के मामलों पर स्पष्ट रूप से निर्भर करता है। लेकिन अंगूठे के एक नियम के रूप में, यदि आपको अपने आसपास के नियंत्रक आदि की पहुंच की आवश्यकता है, तो एक Ember.View का उपयोग करें , लेकिन यदि आप दृश्य को अलग करना चाहते हैं और केवल उस जानकारी को पास करना चाहते हैं, जिसे इसे संदर्भ-अज्ञेय बनाने के लिए काम करने की आवश्यकता है और बहुत अधिक पुन: प्रयोज्य, एक Ember.Component का उपयोग करें ।
आशा करता हूँ की ये काम करेगा।
अपडेट करें
सड़क के एम्बर 2.0 के प्रकाशन के साथ अब आप अधिकांश मामलों में दृश्य के बजाय अवयवों का उपयोग करने के लिए प्रोत्साहित होते हैं।