यह सब इस बात पर निर्भर करता है कि आप अपने कोड के टुकड़े से क्या चाहते हैं। व्यक्तिगत रूप से, यदि कोड में कोई तर्क नहीं है, या नियंत्रक की भी आवश्यकता नहीं है, तो मैं जाता हूं ngInclude
। मैं आम तौर पर बड़े "स्थिर" html टुकड़े डालता हूं जो मैं यहां देखने में अव्यवस्था नहीं चाहता हूं। (यानी: मान लीजिए कि एक बड़ी तालिका जिसका डेटा वैसे भी माता-पिता नियंत्रक से आता है<div ng-include="bigtable.html" />
उन सभी लाइनों की तुलना में दृश्य को अव्यवस्थित कर रहे हैं)
यदि तर्क, DOM हेरफेर है, या आपको इसका उपयोग करने के लिए अलग-अलग उदाहरणों में अनुकूलन (उर्फ अलग तरीके से प्रस्तुत करना) की आवश्यकता है, तो directives
बेहतर विकल्प हैं (वे पहली बार में चुनौतीपूर्ण हैं, लेकिन वे बहुत शक्तिशाली हैं, इसे समय दें) ।
ngInclude
कभी-कभी आप देखेंगे ngInclude's
कि उनके बाहरी $scope
/ से प्रभावित हैं interface
। जैसे कि एक बड़ा / जटिल रिपीटर कहता है। ये 2 इंटरफेस इस वजह से एक साथ बंधे हैं। यदि मुख्य $scope
परिवर्तनों में कुछ है , तो आपको अपने शामिल आंशिक के भीतर अपने तर्क को बदलना / बदलना होगा।
निर्देशों
दूसरी ओर, निर्देश कर सकते हैं स्पष्ट स्कोप / नियंत्रक / आदि तो है आप एक परिदृश्य आप पुन: उपयोग के कुछ कई बार होगा जहां की सोच रहे हैं, तो आप देख सकते हैं कि कैसे अपने स्वयं के दायरे जीवन को आसान और कम होगा जुड़े होने भ्रामक।
इसके अलावा, कभी भी आप डोम के साथ बातचीत करने जा रहे हैं, तो आपको एक निर्देश का उपयोग करना चाहिए। यह परीक्षण के लिए बेहतर बनाता है, और इन क्रियाओं को नियंत्रक / सेवा / आदि से दूर कर देता है, जो कि आप चाहते हैं!
युक्ति: सुनिश्चित करें कि यदि आप IE8 की परवाह नहीं करते हैं, तो प्रतिबंधित का उपयोग न करें: 'E'! इसके आसपास तरीके हैं, लेकिन वे कष्टप्रद हैं। बस जीवन को आसान बनाएं और विशेषता / आदि के साथ रहें।<div my-directive />
अवयव [अद्यतन 3/1/2016]
कोणीय 1.5 में जोड़ा गया, यह अनिवार्य रूप से एक आवरण है .directve()
। अधिकांश समय घटक का उपयोग किया जाना चाहिए। यह बहुत सारी बॉयलरप्लेट डायरेक्टिव कोड को हटा देता है, जैसे चीजों को डिफॉल्ट करके restrict: 'E', scope : {}, bindToController: true
। मैं अत्यधिक आसानी से Angular2 में संक्रमण करने में सक्षम होने के लिए, अपने ऐप में लगभग हर चीज के लिए इनका उपयोग करने की सलाह देता हूं।
निष्कर्ष के तौर पर:
आपको कंपोनेंट और डायरेक्शन बनाने चाहिए अधिकांश समय ।
- अधिक विस्तार योग्य
- आप टेम्पलेट और अपनी फ़ाइल को बाह्य रूप से कर सकते हैं (जैसे ngInclude)
- आप पेरेंट स्कोप का उपयोग करना चुन सकते हैं, या यह स्वयं अलग है निर्देश के भीतर इसका दायरा है।
- अपने पूरे आवेदन में बेहतर उपयोग करें
अपडेट 3/1/2016
अब जब एंगुलर 2 धीरे-धीरे खत्म हो रहा है, और हम जानते हैं कि सामान्य प्रारूप (निश्चित रूप से अभी भी यहां और वहां कुछ बदलाव होंगे) बस यह जोड़ना चाहते थे कि यह करना कितना महत्वपूर्ण है components
(कभी-कभी निर्देश अगर आपको उन्हें प्रतिबंधित करने की आवश्यकता है: ' ई 'उदाहरण के लिए)।
घटक कोणीय 2 के समान हैं @Component
। इस तरह हम एक ही क्षेत्र में तर्क और html को एनकैप्सुलेट कर रहे हैं।
सुनिश्चित करें कि आप घटकों में जितनी चीज़ों को शामिल कर सकते हैं, यह उतना ही आसान हो जाता है कि इससे कोणीय 2 में संक्रमण आसान हो जाएगा! (यदि आप संक्रमण करने के लिए चुनते हैं)
इस माइग्रेशन प्रक्रिया का उपयोग करते हुए एक अच्छा लेख यहां दिया गया है directives
(यदि आप पाठ्यक्रम के घटकों का उपयोग करने जा रहे हैं तो बहुत समान हैं): http://angular-tips.com/blog/2015/09/migrating-directives-to-angular-2/