İçinde birden fazla küçük uygulama bulunan büyük Açısal 2 uygulaması oluşturma


17

React (Redux ile) ve Açısal 2 arasında seçim yapmak için 3 aylık uzun bir tartışma ve araştırmadan sonra, şirketimdeki ön uç ekip (sorunumuza daha uygun olduğu göz önüne alındığında) Açısal 2 ile gitmeye karar verdi.

Şu anda birçok farklı ön uç teknolojiden (tüm arka uç RESTful'a sahipken) oluşan kurumsal uygulama işindeyiz ve hepsini değiştirmek ve gelecekteki eğitim ve kalite kontrolünü kolaylaştırmak için tek bir teknolojiye sahip olmak istedik.

Ürünümüzün doğası göz önüne alındığında, çok geniş ve kendi içinde farklı bir etki alanı olan ve bağımsız bir uygulama olarak yapılabilen modüller var, ancak ürünün kendisi tek bir URL'de yaşıyor.

Misal;

Ürünümü SuperApp olarak adlandıralım.

Bir kullanıcı arayüzü olarak, SuperApp standart giriş sistemine ve alt modüllere / alt ürünlere navigasyona sahiptir, böylece iş akışı aşağıdaki gibi görünür.

  • SuperApp

    • Kullanıcının Kimliğini Doğrula
    • Parola unut sihirbazı
    • Herkese açık sayfaya kimlik doğrulaması olmadan erişilebilir
    • Doğrulanmış kullanıcı

      • Navigasyon sistemi

        • Ev
          • Alt product1
          • Alt product2
          • Alt product3
        • Profil

          ...

          ...

        • Gruplar

          ...

          ...

Yukarıdaki temsilde Sub-product1ve Sub-product2tamamen farklı iş alanlarına sahip iki farklı alan olduğunu unutmayın.

Şu anda düşünebileceğim şey, SuperApp'ı yalnızca kendisiyle ilgili bileşenlere ve görünümlere sahip tek bir Açısal 2 projesi olarak oluşturabildiğim ve SuperApp'ın birden çok alt uygulamanın yüklenmesinden de sorumlu olduğu; Sub-product1, Sub-product2(yine, farklı Angular 2 projeleri, kendilerine ait package.json, webpackyapılandırma, vb.) ve aptal bileşenler aracılığıyla ve üst düzey yönlendirme ve bu alt uygulamaları tutmak için bir yer tutucu sağlayan bir kabuk görevi görür.

Sub-product1Kabuk içine yüklendikten sonra, SuperApp'in indiği geçerli rotaya kendi yollarını ekler.

Ayrılmayı istememin nedeni, şu anda ExtJS kullanılarak oluşturulan bu farklı uygulamaların üzerinde çalışan özel ekiplere sahip olması (500'den fazla geliştiriciye sahip bir şirketiz), bu yüzden kendi Açısal projelerine sahiplerse, araçlarını yönetebilirler ve büyük ebeveyn uygulamasına güvenmeden beğenilerine bağımlılıklar.

Ancak, resmi Açısal dokümanlarda veya web'de herhangi bir yerde, iç içe Açısal uygulamalara sahip olmanın mümkün olup olmadığını (alt uygulamaların bağımlılıkları yalnızca uygulama olduğunda tamamen ayrılmış ve yüklenirken çerçeve kodunun paylaşılacağı şekilde) bulamıyorum veya böyle bir sorunu çözmek için alternatif bir yaklaşım olup olmadığı).

Herhangi bir rehberlik ve hatta ilgili makalelere bağlantılar takdir edilecektir.


Bunun için bir çözüm buldunuz mu?
Dhaval Marthak

@DhavalMarthak Henüz değil, hala fikirlere açığım.
Kushal

@Kushal Buna bir çözüm buldunuz mu? Ben aynı tür bir gereksinim var
Keerthivasan

@Keerthivasan Paylaşılan global paket oluşturmak için iyi bir alternatif olmasına rağmen, henüz sahip değilsiniz. senkron. Dolayısıyla, ürününüz gerçekten büyükse, bu bir mimari seçimden ziyade politik bir karardır.
Kushal

1
Microxchg 2018'de bazı yaklaşımlar hakkında konuşan ön uç monolitini parçalamak hakkında birkaç görüşme yapıldı. Belki orada yararlı bir şey vardır. Bkz. Youtube.com/watch?v=rCxj-ONZmxs ve youtube.com/watch?v=7MHsPfoonqs
sapientpants

Yanıtlar:


1

Ne tanımladığınızı term modülünden biliyorum . Bu yüzden söz edeceğim.

Çerçeve hakkında bilgi eksikliği nedeniyle açısal destek modüllerinin olup olmadığı sorusunu ele almayacağım. Ayrıca, bence bunu gerçekten istemiyorsun. Anladığım kadarıyla ve arka ucunuzun yansıttığını umuyorum, her şeyi yapabileceğiniz en küçük bitlere dilimlemek istiyorsunuz ( mikro hizmetler ).

Bu durumda, diyagramınızdaki her nokta kendi bağımsız uygulaması olmalıdır. Açıkladığınız görüşü oluşturmak için her bir sorumluluğa göre birbirleriyle iletişim kurmaları gerekir. Google'ın kimlik doğrulaması için nasıl ayrılmış bir url / araç / sistem olduğunu gördünüz? Gmail bununla ilgilenmez, çünkü sorumluluğu yoktur. Her bir aletin içine yerleştirilmek yerine tüm aletlerin kaplaması bile merkezidir (bunu malzeme tasarımında görürsünüz). Varlıklar her proje / sistemin dışında yaşıyor.

Böylece, sistemlerinizde daha yüksek bir yeniden kullanılabilirlik ve esneklik kolu elde edersiniz. Küçük takımlarda bu karmaşıklık ve zaman nedeniyle savunulamaz. Şimdi davanızın nereye düştüğünü bulmak sizin işiniz. Hepsi mikro servislerde ve ayrılmada, hepsi bir pakette veya ortasında bir yerde. Ve eğer varsa, modüller her noktanın içinde kullanacağınız bir şeydir.


1

Bir seçenek: alt uygulamalara "sabit bağlantı" (SPA bağlantılarını kullanmak yerine) ve her bir alt uygulamanın site sarmalayıcısına bağımlı olmasını sağlayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.