सेवा, निर्देश और मॉड्यूल के बीच अंतर क्या है?


151

मैं बहुत सारे डॉक्स पढ़ रहा हूं, और मैं अधिक से अधिक भ्रमित हो रहा हूं। मैं मूल रूप से एक के बीच के अंतर का पता नहीं लगा सकता

  • सर्विस
  • आदेश
  • मापांक

मुझे बहुत सारे कस्टम घटक दिखाई देते हैं। कभी-कभी वे निर्देशों का उपयोग कर रहे हैं, कभी-कभी सेवाओं का। यह हमेशा एक मॉड्यूल के साथ शुरू होता है। क्या कोई उदाहरण के साथ समझा सकता है कि इन तीन प्रकारों में क्या अंतर है?

जवाबों:


123

एक मॉड्यूल के रूप में कई अन्य चीजों को तार करने के लिए एक जगह के रूप में सोचें, जैसे कि निर्देश, सेवाएं, स्थिरांक आदि मॉड्यूल को अन्य मॉड्यूल में इंजेक्ट किया जा सकता है जो आपको पुन: उपयोग का एक उच्च स्तर प्रदान करता है।

कोणीय ऐप लिखते समय, आपके पास एक शीर्ष-स्तरीय मॉड्यूल होगा जो आपका एप्लिकेशन कोड (बिना टेम्पलेट के) है।

सेवाएं मुख्य रूप से नियंत्रकों के बीच संवाद करने का एक तरीका है, लेकिन आप एक सेवा को दूसरे में इंजेक्ट कर सकते हैं। सेवाओं को अक्सर आपके डेटा स्टोर पर जाने के तरीके के रूप में उपयोग किया जाता है और लोग कोणीय APIs जैसे ngResource को लपेटेंगे। यह तकनीक उपयोगी है क्योंकि यह परीक्षण (विशेष रूप से नकली) को काफी आसान बनाती है। आपके पास प्रमाणीकरण, लॉगिंग आदि जैसे अन्य काम करने के लिए सेवाएँ हो सकती हैं।

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

एक निर्देश भी डोम हेरफेर करने के लिए एक जगह है, डोम-ईवेंट आदि को पकड़ना। आपको नियंत्रकों या सेवाओं में डोम से संबंधित सामान नहीं करना चाहिए। निर्देश बनाने से काफी जटिल हो सकते हैं। IMHO, मैं सबसे पहले API को किसी ऐसी चीज़ के लिए देखने की सलाह देता हूँ जो आप देख रहे हैं या सलाह के लिए कोणीय के Google समूह से पूछ सकते हैं।


234

मेरे अपने निजी नोटों से (डॉक्स, Google समूह पोस्ट और SO पोस्ट से ज्यादातर स्निपेट):

मॉड्यूल

  • नामस्थान / समूह सेवाओं, निर्देशों, फ़िल्टर, कॉन्फ़िगरेशन जानकारी और आरंभीकरण कोड को एक रास्ता प्रदान करें
  • वैश्विक चर से बचने में मदद करें
  • $ इंजेक्टर को कॉन्फ़िगर करने के लिए उपयोग किया जाता है, जो मॉड्यूल द्वारा परिभाषित चीजों (या पूरे मॉड्यूल को) को कहीं और इंजेक्ट करने की अनुमति देता है (डिपेंडेंसी इंजेक्शन सामान)
  • कोणीय मॉड्यूल कॉमनजेस या आवश्यकताएँ.जेएस से संबंधित नहीं हैं। एएमडी या आवश्यकता के मॉड्यूल के विपरीत, कोणीय मॉड्यूल स्क्रिप्ट लोड ऑर्डरिंग या आलसी स्क्रिप्ट लाने की समस्या को हल करने का प्रयास नहीं करते हैं। ये लक्ष्य ऑर्थोगोनल हैं और दोनों मॉड्यूल सिस्टम साथ-साथ रह सकते हैं और अपने लक्ष्यों को पूरा कर सकते हैं (इसलिए डॉक्स दावा)।

सेवाएं

  • एकल हैं, इसलिए आपके द्वारा परिभाषित प्रत्येक सेवा का केवल एक उदाहरण है। एकल के रूप में, वे स्कोप से प्रभावित नहीं होते हैं, और इसलिए कई विचारों / नियंत्रकों / निर्देशों / अन्य सेवाओं द्वारा (साझा किए जा सकते हैं) तक पहुंच बनाई जा सकती है
  • जब आप कस्टम सेवा बना सकते हैं (और शायद चाहिए)
    • दो या दो से अधिक चीजों को एक ही डेटा तक पहुंचने (रूट स्कोप का उपयोग न करने) की आवश्यकता होती है या आप केवल बड़े करीने से अपने डेटा को एनक्रिप्ट करना चाहते हैं
    • आप एक वेब सर्वर (आपकी सेवा में $ संसाधन या $ http का विस्तार करें) के साथ बातचीत को एनकैप्सुलेट करना चाहते हैं
  • अंतर्निहित सेवाएं '$' से शुरू होती हैं।
  • किसी सेवा का उपयोग करने के लिए, निर्भरता इंजेक्शन निर्भरता (उदाहरण के लिए, नियंत्रक या किसी अन्य सेवा, या निर्देश पर) की आवश्यकता होती है।

निर्देश (नीचे दिए गए कुछ आइटम अनिवार्य रूप से एक ही बात कहते हैं, लेकिन मैंने पाया है कि कभी-कभी थोड़ा अलग शब्द बहुत मदद करता है)

  • मॉडल की स्थिति में परिवर्तन होने पर DOM को अपडेट करने के लिए जिम्मेदार हैं
  • HTML शब्दावली का विस्तार करें = HTML नए गुर सिखाएँ।
    कोणीय निर्देशों (जैसे, एनजी * सामान) के सेट में निर्मित होता है, जो वेब अनुप्रयोगों के निर्माण के लिए उपयोगी होते हैं, लेकिन आप अपना स्वयं का जोड़ सकते हैं जैसे कि HTML को एक घोषित डोमेन विशिष्ट भाषा (डीएसएल) में बदल दिया जा सकता है। जैसे, कोणीय होम पेज के डेमो "कम्पोनेंट कम्पोनेंट्स" पर <टैब्स> और <पेन> एलिमेंट्स।
    • गैर-स्पष्ट अंतर्निहित निर्देश (क्योंकि वे "एनजी" से शुरू नहीं होते हैं): ए, फॉर्म, इनपुट, स्क्रिप्ट, चयन, टेक्सारिया। कोणीय के तहत, ये सभी सामान्य से अधिक करते हैं!
  • निर्देश आपको "HTML को संक्षिप्त करने" की अनुमति देते हैं। निर्देश अक्सर एनजी शामिल की तुलना में बेहतर होते हैं। उदाहरण के लिए, जब आप मुख्य रूप से डेटा-बाइंडिंग के साथ बहुत सारे एचटीएमएल लिखना शुरू करते हैं, तो उस HTML को फिर से शुरू करें (पुन: प्रयोज्य) निर्देशों में।
  • कोणीय संकलक आपको किसी भी HTML तत्व या विशेषता से व्यवहार संलग्न करने की अनुमति देता है और यहां तक ​​कि कस्टम व्यवहार के साथ नए HTML तत्व या विशेषता भी बनाता है। कोणीय इन व्यवहार एक्सटेंशन निर्देशों को कहता है ।
    • जब आप इसे पूरी तरह से उबालते हैं, तो एक निर्देश केवल एक फ़ंक्शन होता है जो तब निष्पादित होता है जब कोणीय कंपाइलर इसका सामना डोम में करता है।
  • एक निर्देश एक व्यवहार या डीओएम परिवर्तन है जो एक विशेषता, एक तत्व नाम, एक वर्ग नाम या एक टिप्पणी में एक नाम की उपस्थिति से शुरू होता है। निर्देश एक व्यवहार है जो तब होना चाहिए जब विशिष्ट HTML निर्माण (HTML) संकलन प्रक्रिया में सामने आए। निर्देशों को तत्व नामों, विशेषताओं, वर्ग नामों के साथ-साथ टिप्पणियों में भी रखा जा सकता है।
    • अधिकांश निर्देश केवल विशेषता के लिए प्रतिबंधित हैं। उदाहरण के लिए, DoubleClick केवल कस्टम विशेषता निर्देशों का उपयोग करता है।
  • यह भी देखें कि एक कोणीय निर्देश क्या है?

मॉड्यूल में कोणीय चीजों (निर्भरता इंजेक्शन सामग्री) को परिभाषित और समूहित करें।
डेटा साझा करें और सेवाओं में वेब सर्वर इंटरैक्शन को लपेटें।
HTML बढ़ाएँ और निर्देशों में DOM हेरफेर करें।
और जितना संभव हो सके "पतले" के रूप में नियंत्रण करें।


1
@ मर्क राजकोक - अच्छा जवाब, मैंने आपको पहले ही +1 दे दिया था, लेकिन मॉड्यूल के तहत अधिक आइटम 3 को स्पष्ट करना बहुत अच्छा होगा, अर्थात "$ इंजेक्टर को कॉन्फ़िगर करें" लोग इंजेक्शन सेवाओं को समझते हैं लेकिन यह मॉड्यूल से कैसे संबंधित है?
वाइटनीलैंड जूल

2
@LeeWhitney, देखें docs.angularjs.org/guide/module#d dependencies : "मॉड्यूल अन्य मॉड्यूल को उनकी निर्भरता के रूप में सूचीबद्ध कर सकते हैं। एक मॉड्यूल पर निर्भर करता है कि आवश्यक मॉड्यूल लोड होने से पहले आवश्यक मॉड्यूल को लोड करने की आवश्यकता है। दूसरे शब्दों में कॉन्फ़िगरेशन। आवश्यक मॉड्यूल के ब्लॉक आवश्यक मॉड्यूल के कॉन्फ़िगरेशन ब्लॉकों से पहले निष्पादित होते हैं। "
मार्क राजकोक

@ मर्कराजकोक लिंक अब टूट गया है
माइकल स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.