अद्यतन 5/24/2018: अब मैं अपने मूल पोस्ट से कोणीय के +3 संस्करण हैं और अभी भी अंतिम व्यावहारिक समाधान नहीं है। लार्स मीजडैम (@LarsMeijdam) एक दिलचस्प दृष्टिकोण के साथ आया है जो निश्चित रूप से देखने लायक है। (मालिकाना मुद्दों के कारण, उन्हें अस्थायी रूप से गिटहब रिपॉजिटरी को हटाना पड़ा जहां उन्होंने मूल रूप से अपना नमूना पोस्ट किया था। हालांकि, अगर आप एक प्रति चाहते हैं तो आप उन्हें सीधे संदेश दे सकते हैं। कृपया अधिक जानकारी के लिए नीचे टिप्पणी देखें।)
एंगुलर 6 में हालिया वास्तु परिवर्तन हमें एक समाधान के करीब लाते हैं। इसके अतिरिक्त, कोणीय तत्व ( https://angular.io/guide/elements ) कुछ घटक कार्यक्षमता प्रदान करता है - हालांकि काफी नहीं है जो मैंने मूल रूप से इस पोस्ट में वर्णित किया है।
यदि अद्भुत कोणीय टीम में से कोई भी इस पार आता है, तो कृपया ध्यान दें कि कई अन्य लोग हैं जो इस कार्यक्षमता में भी बहुत रुचि रखते हैं। यह बैकलॉग के लिए अच्छी तरह से विचार करने लायक हो सकता है।
मैं एक प्लगेबल (प्लग में) एक में ढांचे को लागू करना चाहते हैं Angular 2
, Angular 4
, Angular 5
, या Angular 6
आवेदन।
(इस प्लग करने योग्य ढांचे को विकसित करने के लिए मेरा विशिष्ट उपयोग मामला यह है कि मुझे एक लघु सामग्री प्रबंधन प्रणाली विकसित करने की आवश्यकता है। कई कारणों से जो यहां विस्तृत रूप से वर्णित नहीं Angular 2/4/5/6
हैं, उस प्रणाली की अधिकांश आवश्यकताओं के लिए एक सही फिट है।)
प्लगेबल फ्रेमवर्क (या प्लग-इन आर्किटेक्चर) के द्वारा, मेरा विशेष रूप से एक प्रणाली से तात्पर्य है, जो थर्ड पार्टी डेवलपर्स को प्राथमिक एप्लिकेशन के सोर्स कोड के प्रत्यक्ष या ज्ञान तक पहुंच के बिना प्लग करने योग्य घटकों के उपयोग के माध्यम से प्राथमिक एप्लिकेशन की कार्यक्षमता बनाने या विस्तारित करने की अनुमति देता है। या भीतरी कामकाज ।
( अनुप्रयोग के स्रोत कोड या आंतरिक कामकाज के प्रत्यक्ष उपयोग या ज्ञान के बिना "के बारे में " यह एक मुख्य उद्देश्य है।
प्लगेबल फ्रेमवर्क के उदाहरणों में कॉमन कंटेंट मैनेजमेंट सिस्टम जैसे WordPress
या Drupal
।
आदर्श स्थिति (जैसा कि ड्रुपल के साथ) सरल होगा, इन प्लग करने योग्य घटकों (या प्लग-इन) को एक फ़ोल्डर में रखने में सक्षम होगा, एप्लिकेशन ऑटो-डिटेक्ट करें या उन्हें खोजें, और उन्हें बस जादुई रूप से "काम" करें। यह कुछ प्रकार के गर्म-प्लग-योग्य तरीके से होता है, जिसका अर्थ है कि ऐप चल रहा था, इष्टतम होगा।
मैं वर्तमान में निम्नलिखित पांच प्रश्नों के उत्तर ( आपकी मदद से ) निर्धारित करने का प्रयास कर रहा हूं ।
- व्यावहारिकता: एक
Angular 2/4/5/6
आवेदन के लिए एक प्लगइन फ्रेमवर्क भी व्यावहारिक है? (अब तक, मुझे वास्तव में प्लग करने योग्य रूपरेखा बनाने का कोई व्यावहारिक तरीका नहीं मिला हैAngular2/4/5/6
।) - अपेक्षित चुनौतियां: एक
Angular 2/4/5/6
आवेदन के लिए एक प्लगइन ढांचे को लागू करने में क्या चुनौतियां आ सकती हैं ? - कार्यान्वयन रणनीतियाँ: किसी
Angular 2/4/5/6
एप्लिकेशन के लिए एक प्लगइन फ्रेमवर्क को लागू करने के लिए कौन सी विशिष्ट तकनीकों या रणनीतियों को नियोजित किया जा सकता है ? - सर्वोत्तम प्रथाएँ: एक
Angular 2/4/5/6
आवेदन के लिए एक प्लगइन प्रणाली को लागू करने के लिए सबसे अच्छे अभ्यास क्या हैं ? - वैकल्पिक प्रौद्योगिकियां: यदि किसी एप्लिकेशन में एक प्लगइन फ्रेमवर्क व्यावहारिक नहीं है
Angular 2/4/5/6
, तो आधुनिक उच्च प्रतिक्रियाशील वेब एप्लिकेशन के लिए कौन सी अपेक्षाकृत समकक्ष प्रौद्योगिकियां (जैसेReact
) उपयुक्त हो सकती हैं ?
सामान्य तौर पर, का उपयोग Angular 2/4/5/6
बहुत ही वांछनीय है क्योंकि:
- यह स्वाभाविक रूप से बहुत तेज है - धधकते हुए।
- यह बहुत कम बैंडविड्थ (प्रारंभिक भार के बाद) का उपभोग करता है
- यह एक अपेक्षाकृत छोटे पदचिह्न (के बाद है
AOT
औरtree shaking
) - और कि पदचिह्न हटना करने के लिए जारी - यह अत्यधिक कार्यात्मक है, और कोणीय टीम और समुदाय अपने पारिस्थितिकी तंत्र का तेजी से विकास कर रहे हैं
- यह कई बेहतरीन और नवीनतम वेब तकनीकों जैसे कि
TypeScript
और के साथ अच्छा खेलता हैObservables
- कोणीय 5 अब सेवा कार्यकर्ताओं ( https://medium.com/@webmaxru/a-new-angular-service-worker-creating-automatic-progressive-web-apps-part-1-theory-37d7d7647cc7 ) का समर्थन करता है
- द्वारा समर्थित होने के कारण
Google
, इसे भविष्य में अच्छी तरह से समर्थित और बढ़ाया जाने की संभावना है
मैं Angular 2/4/5/6
अपने वर्तमान प्रोजेक्ट के लिए बहुत उपयोग करना चाहूंगा । अगर मैं उपयोग करने में सक्षम Angular 2/4/5/6
हूं, तो मैं भी उपयोग करूंगा Angular-CLI
और शायद Angular Universal
(सर्वर-साइड रेंडरिंग के लिए)।
यहाँ मेरे विचार हैं, अब तक, उपरोक्त प्रश्नों के बारे में। कृपया समीक्षा करें और अपनी प्रतिक्रिया और ज्ञान प्रदान करें।
Angular 2/4/5/6
एप्लिकेशन पैकेजों का उपभोग करते हैं - लेकिन यह जरूरी नहीं है कि किसी एप्लिकेशन के भीतर प्लगइन्स की अनुमति हो। अन्य प्रणालियों (जैसेDrupal
) में एक प्लगइन अनिवार्य रूप से प्लगइन फ़ोल्डर को एक सामान्य मॉड्यूल निर्देशिका में ड्रॉप करके जोड़ा जा सकता है जहां यह सिस्टम द्वारा स्वचालित रूप से "उठाया" जाता है। मेंAngular 2/4/5/6
, एक पैकेज (एक प्लगइन के रूप में हो सकता है) आमतौर पर के माध्यम से स्थापित किया जाता हैnpm
, में जोड़ा जाता हैpackage.json
, और फिर मैन्युअल रूप से ऐप में आयात किया जाता है - जैसे किapp.module
। यहDrupal
एक फ़ोल्डर को छोड़ने और सिस्टम को स्वचालित रूप से पैकेज का पता लगाने की विधि की तुलना में बहुत अधिक जटिल है । एक प्लगइन स्थापित करने के लिए जितना अधिक जटिल है, उतना ही कम लोगों को उनका उपयोग करने की संभावना होगी। इसके लिए रास्ता होता तो ज्यादा बेहतर होताAngular 2/4/5/6
स्वचालित रूप से प्लगइन्स का पता लगाने और स्थापित करने के लिए। मुझे एक ऐसी विधि खोजने में बहुत दिलचस्पी है जो गैर-डेवलपर्स कोAngular 2/4/5/6
एप्लिकेशन को स्थापित करने और किसी भी चुने हुए प्लगइन्स को स्थापित करने की अनुमति देता है , ताकि एप्लिकेशन के सभी आर्किटेक्चर को समझे बिना।आमतौर पर, एक प्लगेबल आर्किटेक्चर प्रदान करने के लाभों में से एक यह है कि सिस्टम की कार्यक्षमता का विस्तार करने के लिए 3 पार्टी डेवलपर्स के लिए यह बहुत आसान है। जाहिर है, ये डेवलपर्स उस एप्लिकेशन के सभी कोड से परिचित नहीं होंगे जिसके लिए वे प्लग इन कर रहे हैं। एक बार प्लगइन्स विकसित होने के बाद, अन्य कम तकनीकी उपयोगकर्ता भी केवल एप्लिकेशन और किसी भी चयनित प्लगइन्स को स्थापित कर सकते हैं। हालांकि,
Angular 2/4/5/6
अपेक्षाकृत जटिल है और इसमें बहुत लंबा सीखने की अवस्था है। आगे जटिल बातें करने के लिए, सबसे उत्पादनAngular 2/4/5/6
आवेदन भी उपयोगAngular-CLI
,Angular Universal
औरWebPack
। एक प्लगइन को लागू करने वाले किसी व्यक्ति के पास कम से कम कुछ बुनियादी ज्ञान होना चाहिए कि ये सभी एक साथ कैसे फिट होते हैं - एक मजबूत काम ज्ञान के साथTypeScript
और एक उचित परिचित के साथNodeJS
। क्या ज्ञान की आवश्यकताएं इतनी चरम हैं कि कोई तीसरा पक्ष कभी भी प्लगइन विकसित नहीं करना चाहेगा?अधिकांश प्लगइन्स की संभावना कुछ सर्वर साइड घटक (जैसे प्लगइन संबंधित डेटा को संग्रहीत / पुनर्प्राप्त करने के लिए) के साथ-साथ कुछ क्लाइंट-साइड आउटपुट में होगी।
Angular 2/4/5
विशेष रूप से (और दृढ़ता से) डेवलपर्स को अपने स्वयं के टेम्प्लेट को रनटाइम पर इंजेक्ट करने से हतोत्साहित करता है - क्योंकि यह एक गंभीर सुरक्षा जोखिम पैदा करता है। कई प्रकार के आउटपुट को संभालने के लिए, जो एक प्लगइन को समायोजित कर सकता है (उदाहरण के लिए एक ग्राफ का प्रदर्शन), ऐसा प्रतीत होता है कि उपयोगकर्ताओं को ऐसी सामग्री बनाने की अनुमति मिलती है, जो प्रतिक्रिया स्ट्रीम में इंजेक्ट की जाती है, एक रूप में दूसरे में, संभवतः आवश्यक है। मुझे आश्चर्य है कि कैसे इस आवश्यकता को समायोजित करने के लिए संभव हो सकता है बिना लाक्षणिकAngular 2/4/5/6
सुरक्षा तंत्र की कतरन ।अधिकांश उत्पादन
Angular 2/4/5/6
अनुप्रयोग संकलनAhead of Time
(AOT
) संकलन का उपयोग करके पूर्व-संकलित किए जाते हैं । (संभवतः सभी को होना चाहिए।) मैं अनिश्चित हूं कि प्लगइन्स को पूर्व-संकलित अनुप्रयोगों में कैसे जोड़ा जा सकता है (या साथ एकीकृत)। सबसे अच्छा परिदृश्य मुख्य अनुप्रयोग से अलग से प्लगइन्स संकलित करना शामिल होगा। हालांकि, मैं अनिश्चित हूं कि यह काम कैसे किया जाए। फ़ॉलबैक किसी भी शामिल प्लगइन्स के साथ पूरे एप्लिकेशन को फिर से संकलित करने के लिए हो सकता है, लेकिन यह एक प्रशासनिक उपयोगकर्ता के लिए चीजों को थोड़ा जटिल करता है जो किसी भी चयनित प्लगइन्स के साथ ही एप्लिकेशन (अपने सर्वर पर) को इंस्टॉल करना चाहता है।एक
Angular 2/4/5/6
आवेदन में, विशेष रूप से पूर्व-संकलित, गलत या परस्पर विरोधी कोड का एक भी टुकड़ा पूरे आवेदन को तोड़ सकता है।Angular 2/4/5/6
अनुप्रयोग हमेशा डिबग करने के लिए सबसे आसान नहीं होते हैं। गैर-व्यवहार वाले प्लगइन्स के अनुप्रयोग के परिणामस्वरूप बहुत अप्रिय अनुभव हो सकते हैं। मैं इस समय अनजान व्यवहार करने वाले प्लगइन्स को सावधानीपूर्वक संभालने के लिए एक तंत्र से अनजान हूं।