Kurumsal frontend uygulama mimarisi
(medium.com)-
Kod tabanının büyümesi = hem anlamanın hem de değiştirmenin zorlaşması
-
Çözüm ne? Kod tabanını küçük tutmak.
-
Alan bazında kod tabanı ayrımı & mikro frontend imdada yetişiyor!
-
Monorepo içinde kütüphanelerin bağımlılık ilişkilerini tanımlama & bağımlılıkları doğrulama gibi ihtiyaçlar Nx kullanılarak çözüldü
-
Kod, uygulamalar ve kütüphaneler olarak ayrıldı
-
Uygulamalar bağımlılık ve yapılandırma enjeksiyonu rolünü üstleniyor
-
İşlevlerin büyük bölümü kütüphanelerde uygulanıyor
- Kütüphanelerde yeniden kullanılabilir tasarım sistemi, uluslararasılaştırma, üçüncü taraf modüllerinin yanı sıra ana sayfanın hero banner'ı, ürün detay sayfası, sipariş geçmişi gibi yeniden kullanılmayan kodlar da yazılıyor.
Feature kütüphanesi
-
Temel olarak bir sayfada kullanılan tüm bileşenler aynı adlı Feature kütüphanesinde yazılır
- ör.)
accountalanındakiSignInPagesayfasının tüm bileşenleriaccount/feature-sign-inkütüphanesinde yazılır
- ör.)
-
Aynı alanın iki veya daha fazla sayfasında paylaşılan bileşenler, ilgili alan içinde ayrı bir feature olarak ayrılır
- ör.)
accountalanındakiSignInPageveSignUpPageiçindeKakaoLoginButtonbileşeni ortak kullanılıyorsa bu bileşenaccount/feature-social-loginkütüphanesinde yazılır
- ör.)
-
Farklı alanlardaki sayfalarda paylaşılan bileşenler, ortak alan içinde ayrı bir feature olarak ayrılır
- ör.)
landingalanındakiHomePageileclassroomalanındakiLecturePagearasında paylaşılanGlobalNavigationbileşenishared/feature-navigationkütüphanesinde yazılır
- ör.)
Shell kütüphanesi
-
Feature ve UI kütüphanelerindeki bileşenler birleştirilerek sayfalar oluşturulur
- ör.)
SignInPagebileşeni account/shell-kr-web kütüphanesinin bir bileşenidir. BuradaSignUpPage,PhoneVerificationPagevb. bulunur.
- ör.)
-
Shell kütüphanesi, uygulamaya sunulan belirli bir alanın giriş noktasıdır
-
Her uygulama için farklı giriş noktaları sağlanabilir
-
Örneğin..
-
HomePagebileşeninde kullanılan bileşenlerlanding/feature-homekütüphanesinde yazılmıştır. -
Ancak aynı
HomePagebileşeni bile ABD sitesininHomePage'i mi, Japonya sitesininHomePage'i mi, Kore sitesininHomePage'i mi olduğuna göre farklı bir yapıya sahip olacaktır. -
Bu nedenle
landingalanına erişen her uygulama için birshellkütüphanesi oluşturulabilir. (shell-us-web,shell-jp-web,shell-kr-web)
-
Provider kütüphanesi
-
İki veya daha fazla Feature kütüphanesi arasında paylaşılan durumu yöneten kütüphane
- ör.) oturum açma durumunu yöneten
shared/provider-auth-state
- ör.) oturum açma durumunu yöneten
UI kütüphanesi
- İki veya daha fazla kütüphane arasında paylaşılan sunumsal bileşenler koleksiyonu.
Utility kütüphanesi
-
Yukarıdaki 4 sınıfa girmeyen tüm modüller
-
Class101'in alan modeliyle ilgisiz, test ve dağıtımdan bağımsız şekilde çalışabilecek kadar bağımsız işlevler sunmalıdır.
- ör.)
shared/utils-apollo-client,shared/utils-i18n
- ör.)
Uygulama
- Yalnızca yapılandırma ve bağımlılık yönetimi rolünü üstlenir = uygulama kodu neredeyse yoktur
Henüz yorum yok.