बड़े एंगुलर 2 ऐप को कई छोटे ऐप के साथ कंपोज़ करना


17

प्रतिक्रिया (Redux के साथ) और कोणीय 2 के बीच चयन करने के लिए 3 महीने की बहस और शोध के बाद, मेरी कंपनी में फ्रंट-एंड टीम ने एंगुलर 2 के साथ जाने के लिए निष्कर्ष निकाला है (यह देखते हुए कि यह हमारी समस्या के लिए अधिक अनुकूल है)।

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

हमारे उत्पाद की प्रकृति को देखते हुए, यह विशाल है, और इसके भीतर मॉड्यूल हैं, जो अपने आप में एक अलग डोमेन हैं और इसे स्टैंडअलोन ऐप के रूप में बनाया जा सकता है लेकिन उत्पाद स्वयं एक ही URL में रहता है।

उदाहरण;

चलो मेरे उत्पाद को SuperApp के रूप में कहते हैं।

UI के रूप में, SuperApp में मानक लॉगिन प्रणाली और बाल मॉड्यूल / उप-उत्पादों के लिए नेविगेशन है, जैसे कि वर्कफ़्लो निम्नानुसार दिखाई देता है।

  • SuperApp

    • उपयोगकर्ता को प्रमाणित करें
    • पासवर्ड विज़ार्ड भूल जाओ
    • सार्वजनिक पृष्ठ पर पहुंच के बिना
    • प्रमाणित उपयोगकर्ता

      • दिशानिर्देशन प्रणाली

        • घर
          • उप-उत्पाद 1
          • उप-PRODUCT2
          • उप-product3
        • प्रोफ़ाइल

          ...

          ...

        • समूह

          ...

          ...

ध्यान दें कि उपरोक्त प्रतिनिधित्व में, Sub-product1और Sub-product2दो पूरी तरह से अलग-अलग क्षेत्र हैं, पूरी तरह से अलग-अलग व्यापार डोमेन हैं।

अभी जो मैं सोच सकता हूं वह यह है कि मैं सुपरपावर को एक कोणीय 2 परियोजना के रूप में बना सकता हूं जिसमें केवल घटक और दृश्य हैं जो स्वयं के लिए प्रासंगिक हैं, और सुपरएप कई बच्चे एप्लिकेशन को लोड करने के लिए भी जिम्मेदार है; Sub-product1, Sub-product2(फिर से, विभिन्न कोणीय 2 परियोजनाएं, अपने स्वयं के package.json, webpackविन्यास, आदि) को गूंगा घटकों के माध्यम से, और एक शेल के रूप में कार्य करते हैं जो उन बच्चों के ऐप्स को रखने के लिए शीर्ष-स्तरीय रूटिंग और प्लेसहोल्डर प्रदान करता है।

एक बार, Sub-product1शेल के भीतर लोड हो जाने पर, यह अपने स्वयं के मार्गों को वर्तमान मार्ग में जोड़ देगा जो सुपरएप पर उतरा है।

मुझे अलग करने की वजह यह है कि ये अलग-अलग ऐप (जो कि वर्तमान में एक्सटीजेएस का उपयोग करके बनाए गए हैं) ने इस पर काम करने वाली टीमों को समर्पित किया है (हम 500+ डेवलपर्स वाली कंपनी हैं), इसलिए यदि उनके पास अपने स्वयं के कोणीय प्रोजेक्ट हैं, तो वे अपने टूलिंग का प्रबंधन कर सकते हैं और भव्य माता-पिता ऐप पर भरोसा किए बिना उनकी पसंद पर निर्भरता।

लेकिन मैं आधिकारिक कोणीय डॉक्स, या वेब पर कहीं भी यह पता लगाने में असमर्थ हूं कि क्या नेस्टेड एंगुलर ऐप्स होना संभव है (इस तरह से कि फ्रेमवर्क कोड साझा किया जाता है, जबकि चाइल्ड एप्स की निर्भरता पूरी तरह से अलग हो जाती है और केवल तभी लोड होती है जब ऐप इसकी जरूरत है), या इस तरह की समस्या को हल करने के लिए कोई वैकल्पिक तरीका है।

किसी भी प्रासंगिक लेख के किसी भी मार्गदर्शन या लिंक की सराहना की जाएगी।


क्या आपको इसके लिए कोई समाधान मिला?
धवल मार्थक

@DhavalMarthak अभी तक नहीं, मैं अभी भी विचारों के लिए खुला हूँ।
कुशाल

@ कुशाल क्या आपको इसका कोई हल मिला? मुझे उसी तरह की आवश्यकता है
कीर्तिवासन

@Keerthivasan अभी तक नहीं मिला है, हालांकि एक अच्छा विकल्प साझा वैश्विक पैकेज बनाना होगा। Json और फिर हर जगह पेज के भीतर माइक्रो-ऐप करें, लेकिन यह सद्भाव में तभी काम करेगा जब कंपनी के सभी फ्रंट देव टीमों को रखा जाएगा। सिंक। इसलिए यदि आपका उत्पाद वास्तव में बड़ा है, तो यह आर्किटेक्चर की पसंद से अधिक राजनीतिक निर्णय है।
कुशाल

1
Microxchg 2018 में फ्रंटेंड मोनोलिथ को तोड़ने के बारे में कुछ बातचीत हुई जो कुछ दृष्टिकोणों के बारे में बात करती हैं। शायद वहाँ कुछ उपयोगी है। देखें youtube.com/watch?v=rCxj-ONZmxs और youtube.com/watch?v=7MHsPfoonqs
sapientpants

जवाबों:


1

आप जो वर्णन कर रहे हैं, मैं मॉड्यूल थर्म द्वारा जानता हूं । इसलिए मैं इस तरह का उल्लेख करूंगा।

मैं इस सवाल के समाधान के लिए नहीं जा रहा हूं कि ढांचे पर ज्ञान की कमी के लिए कोणीय समर्थन मॉड्यूल हैं या नहीं। इसके अलावा, मेरी राय में आप वास्तव में यह नहीं चाहते हैं। मेरी समझ में, और मुझे उम्मीद है कि आपका बैकएंड प्रतिबिंबित करता है, आप सब कुछ छोटे टुकड़ों में करना चाहते हैं जो आप ( सूक्ष्म सेवाएं ) कर सकते हैं ।

इस स्थिति में आपके आरेख पर प्रत्येक बिंदु का अपना स्वतंत्र ऐप होना चाहिए। वे सुनिश्चित करें कि आपके द्वारा बताए गए दृश्य की रचना करने के लिए प्रत्येक जिम्मेदारी के अनुसार एक-दूसरे से संवाद करना चाहिए। आपने देखा कि Google ने कैसे एक अलग url / टूल / सिस्टम को ऑर्ट किया है? जीमेल को इस बात की परवाह नहीं है कि यह इसकी जिम्मेदारी नहीं है। यहां तक ​​कि सभी उपकरणों की स्कीइंग प्रत्येक टूल में स्थित होने के बजाय केंद्रीय है (आप इसे सामग्री डिजाइन पर देखते हैं)। संपत्ति प्रत्येक परियोजना / प्रणाली के बाहर रहती है।

ऐसा करने से आप अपने सिस्टम के पुन: प्रयोज्य और लचीलेपन का एक उच्च लीवर प्राप्त करते हैं। हालांकि छोटी टीमों में यह जटिलता और समय के कारण अस्थिर है। अब यह जानना आपका काम है कि आपका मामला कहां पर है। सभी सूक्ष्म सेवाओं और पृथक्करण में, सभी एक pkg में या कहीं बीच में। और मॉड्यूल, यदि उपलब्ध हो, तो कुछ ऐसा है जिसका उपयोग आप प्रत्येक डॉट के अंदर करेंगे।


1

एक विकल्प: आप उप-ऐप के लिए "कड़ी लिंक" (एसपीए लिंक का उपयोग करने के बजाय) कर सकते हैं और प्रत्येक उप-ऐप में साइट रैपर के लिए एक निर्भरता साझा करते हैं।

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