यह समझने के लिए कि मुझे ओपी का प्रश्न वास्तव में क्या है:
अगर मैं मुख्य रूप से Angular 1.x में एक एप्लिकेशन बना रहा हूं, और (संक्षेप में) ग्रंट / गुलप / ब्रोकोली और बोवर / NPM के युग में ऐसा कर रहा हूं, और मेरे पास कुछ अतिरिक्त लाइब्रेरी निर्भरता है, तो मुझे स्पष्ट, विशिष्ट जोड़ने की आवश्यकता है आवश्यकता के बिना कोणीय का उपयोग करके मुझे जो भी मिलता है उससे परे मूल्य?
या, एक और तरीका रखो:
" अगर मुझे मूल स्क्रिप्ट-लोडिंग से निपटने के अन्य तरीके हैं , तो क्या वैनिला कोणीय को बुनियादी कोणीय घटक-लोडिंग को प्रभावी ढंग से प्रबंधित करने की आवश्यकता है ? "
और मेरा मानना है कि इसका मूल उत्तर यह है: "जब तक आपको कुछ और नहीं मिल रहा है, और / या आप नए, अधिक नए टूल का उपयोग करने में असमर्थ हैं।"
आइए शुरू में स्पष्ट हो जाएं: आवश्यकताएँ एक महान उपकरण है जो कुछ बहुत ही महत्वपूर्ण समस्याओं को हल करता है, और हमें उस सड़क पर ले जाना शुरू कर रहा है जो हम अधिक स्केलेबल, अधिक पेशेवर जावास्क्रिप्ट अनुप्रयोगों की ओर ले जा रहे हैं। महत्वपूर्ण रूप से, यह पहली बार था जब कई लोगों को मॉडर्नाइजेशन की अवधारणा का सामना करना पड़ा और चीजों को वैश्विक दायरे से बाहर करना पड़ा। इसलिए, यदि आप एक जावास्क्रिप्ट एप्लिकेशन बनाने जा रहे हैं जिसे स्केल करने की आवश्यकता है, तो आवश्यकता है और एएमडी पैटर्न ऐसा करने के लिए खराब उपकरण नहीं हैं।
लेकिन, क्या एंगुलर के बारे में कुछ खास है जो आवश्यकता / एएमडी को विशेष रूप से अच्छा बनाता है? नहीं, वास्तव में, कोणीय आपको अपने स्वयं के मॉडर्नाइजेशन और एनकैप्सुलेशन पैटर्न प्रदान करता है, जो कई मायनों में एएमडी के बुनियादी मॉड्यूलरीकरण सुविधाओं को बेमानी प्रदान करता है। और, एंगुलर मॉड्यूल को एएमडी पैटर्न में एकीकृत करना असंभव नहीं है, लेकिन यह थोड़ा है ... बारीक है। आप निश्चित रूप से अच्छी तरह से एकीकृत करने के लिए दो पैटर्न प्राप्त करने में समय बिताएंगे।
स्वयं कोणीय टीम के कुछ परिप्रेक्ष्य के लिए, यह है , ब्रायन फोर्ड से, कोणीय बटरेंग के लेखक और अब कोणीय कोर टीम के सदस्य:
मुझे AngularJS के साथ आवश्यकताएँ का उपयोग करने की अनुशंसा नहीं है। हालाँकि यह निश्चित रूप से संभव है, लेकिन मैंने ऐसा कोई उदाहरण नहीं देखा है जहाँ आवश्यकताएँ प्रैक्टिस में फायदेमंद हों।
तो, AngularJS के बहुत विशिष्ट प्रश्न पर: कोणीय और आवश्यकता / AMD ऑर्थोगोनल हैं, और अतिव्यापी स्थानों में। आप उन्हें एक साथ उपयोग कर सकते हैं, लेकिन कोई कारण नहीं है जो विशेष रूप से स्वयं कोणीय / प्रकृति के पैटर्न से संबंधित है।
लेकिन स्केलेबल जावास्क्रिप्ट अनुप्रयोगों के लिए आंतरिक और बाहरी निर्भरता के बुनियादी प्रबंधन के बारे में क्या? वहाँ वास्तव में मेरे लिए कुछ महत्वपूर्ण करने की आवश्यकता नहीं है?
मैं Bower और NPM और विशेष रूप से NPM की जाँच करने की सलाह देता हूँ। मैं इन उपकरणों के तुलनात्मक लाभों के बारे में एक पवित्र युद्ध शुरू करने की कोशिश नहीं कर रहा हूं। मैं केवल यह कहना चाहता हूं: बिल्ली के लिए त्वचा के अन्य तरीके हैं, और वे तरीके एएमडी / आवश्यकता से भी बेहतर हो सकते हैं। (वे निश्चित रूप से 2015 के अंत में बहुत अधिक लोकप्रिय गति हैं, विशेष रूप से एनपीएम, ईएस 6 या कॉमनजस मॉड्यूल के साथ संयुक्त। एसओ से संबंधित प्रश्न ।)
आलसी-लोडिंग के बारे में क्या?
ध्यान दें कि आलसी-लोडिंग और आलसी-डाउनलोडिंग अलग-अलग हैं। कोणीय के आलसी-लोडिंग का मतलब यह नहीं है कि आप उन्हें सर्वर से सीधे खींच रहे हैं। जावास्क्रिप्ट स्वचालन के साथ एक योमन-शैली के आवेदन में, आप एक ही फाइल में पूरे शेलबैंग को एक साथ समतल और छोटा कर रहे हैं। वे मौजूद हैं, लेकिन तब तक निष्पादित नहीं किए जाते / जब तक जरूरत न हो। गति और बैंडविड्थ सुधार आपको यह करने से प्राप्त होते हैं, विशेष रूप से 20-लाइन नियंत्रक को आलसी-डाउनलोड करने से किसी भी कथित सुधार को बढ़ाते हैं। वास्तव में, उस नियंत्रक के लिए व्यर्थ नेटवर्क विलंबता और ट्रांसमिशन ओवरहेड, नियंत्रक के आकार से अधिक परिमाण का एक आदेश होने जा रहा है।
लेकिन मान लीजिए कि आपको वास्तव में आलसी-डाउनलोडिंग की आवश्यकता है, शायद आपके आवेदन के अनैतिक रूप से उपयोग किए जाने वाले टुकड़ों के लिए, जैसे कि एक व्यवस्थापक इंटरफ़ेस। यह बहुत वैध मामला है। आवश्यकता वास्तव में आप के लिए कर सकते हैं। लेकिन देखते हैं भी कई अन्य , संभवतः अधिक लचीला विकल्प है कि इसी कार्य को पूरा। और कोणीय 2.0 स्पष्ट रूप से हमारे लिए इस बात का ध्यान रखेगा, बिल्ट-इन राउटर के लिए । ( विवरण )
लेकिन मेरे स्थानीय देव बॉक्सन पर विकास के दौरान क्या होगा?
मैं अपने सभी दर्जनों / सैकड़ों स्क्रिप्ट फ़ाइलों को मैन्युअल रूप से उन सभी को अनुक्रमणिका में संलग्न किए बिना कैसे लोड कर सकता हूं?
येओमान के जनरेटर-कोणीय में उप-जनरेटर, या जनरेटर-गल्प-कोणीय में सन्निहित ऑटोमेशन पैटर्न पर, या रिएक्ट के लिए मानक वेबपैक स्वचालन पर एक नज़र डालें । ये आपको या तो एक साफ, स्केलेबल तरीका प्रदान करते हैं: स्वचालित रूप से उस समय फ़ाइलों को संलग्न करते हैं जो घटक पाड़ जाते हैं, या बस उन सभी को स्वचालित रूप से हड़पने के लिए यदि वे कुछ फ़ोल्डर्स में मौजूद हैं / कुछ ग्लोब-पैटर्न से मेल खाते हैं। एक बार बाद वाले विकल्प प्राप्त करने के बाद आपको अपने स्वयं के स्क्रिप्ट-लोडिंग के बारे में सोचने की ज़रूरत नहीं है।
जमीनी स्तर?
आवश्यकता एक महान उपकरण है, कुछ चीजों के लिए। लेकिन जब भी संभव हो अनाज के साथ जाएं, और जब भी संभव हो अपनी चिंताओं को अलग करें। कोणीय को अपने मॉड्यूलर पैटर्न के बारे में चिंता करने दें, और ES6 मॉड्यूल या कॉमनजेस को सामान्य मॉड्यूलर पैटर्न के रूप में उपयोग करने पर विचार करें। आधुनिक ऑटोमेशन टूल को स्क्रिप्ट-लोडिंग और निर्भरता-प्रबंधन के बारे में चिंता करने दें। और अन्य दो चिंताओं के साथ उलझने के बजाय, बारीक तरीके से एस्किंस आलसी-लोडिंग का ख्याल रखें।
उस ने कहा, यदि आप कोणीय एप्लिकेशन विकसित कर रहे हैं, लेकिन किसी कारणवश जावास्क्रिप्ट स्वचालन उपकरण का उपयोग करने के लिए अपनी मशीन पर नोड स्थापित नहीं कर सकते हैं, तो एक अच्छा वैकल्पिक समाधान हो सकता है। और मैंने वास्तव में विस्तृत सेटअपों को देखा है जहां लोग कोणीय घटकों को गतिशील रूप से लोड करना चाहते हैं जो प्रत्येक अपनी स्वयं की निर्भरता या कुछ घोषित करता है। और जब मैं शायद उस समस्या को दूसरे तरीके से हल करने की कोशिश करूंगा, तो मैं उस विशेष स्थिति के लिए विचार के गुण देख सकता हूं।
लेकिन अन्यथा ... आधुनिक स्वचालन वातावरण बनाने के लिए एक नए कोणीय अनुप्रयोग और लचीलेपन के साथ खरोंच से शुरू होने पर ... आपको बहुत सारे अन्य, अधिक लचीले, अधिक आधुनिक विकल्प मिल गए हैं।
(विकसित जेएस दृश्य के साथ रखने के लिए बार-बार अपडेट किया गया।)