Angularda micro frontend nedir?
Micro Frontends, web uygulamaları oluştururken onları daha küçük, bağımsız ve gevşek bağlı modüllere ayıran bir mimari stilidir. Her bir modül, bir Micro Frontend olarak adlandırılır. Bu yaklaşım, monolitik frontendlere ilişkin sınırlamaları aşmaya yardımcı olur ve geliştirme sürecini daha yönetilebilir ve ölçeklenebilir hale getirir. Angular bağlamında, Micro Frontends, modüler ve bakımı kolay Angular uygulamaları oluşturmak için uygulanabilir.
Angular, Micro Frontends’ı uygulamak için farklı yaklaşımlar sunar. Bu yaklaşımlardan biri, Webpack 5’in Modül Federasyonu özelliğini kullanır ve uygulamanızı çalışma zamanında tek bir uygulama oluşturacak şekilde inşa etmenize yardımcı olur. Ancak, Modül Federasyonu tarafından sunulan belirli ileri düzey seçeneklere ihtiyacınız yoksa, bu yaklaşım hayatınıza gereksiz karmaşıklık ekleyebilir.
Micro Frontend mimarisi, back-end geliştirmede kullanılan mikro-servis mimarisiyle oldukça benzerdir. Büyük, monolitik frontendlere ilişkin sınırlamalardan kaçınmaya yardımcı olur. Angular’da, Micro Frontends’i uygulamak için lerna veya nx gibi araçları kullanarak bağımsız olarak dağıtılabilir küçük paketlerle birlikte monorepo kullanabilirsiniz.
Şimdi ufak bir projeyle göstermek istiyorum.
Önemli: Bu kod Angular CLI 16** ve üstü için yazılmıştır. Basit bir uygulama oluşturdum ve temel bir kullanıcı arayüzü tasarladım. Bu uygulamada bir konteyner, MF1 -> Mikro ön yüz bir (uygulama modülüne erişim) ve MFE2 -> React ile oluşturulan ikinci mikro ön yüz (bir uygulama bileşeni oluştur ve konteyner modülünde erişim sağla) oluşturdum.
Bölüm 1: Çalıştırma Adımları
1. Bu eğitim için başlangıç kitini kopyalayın: GITHUB
2. Proje dizinine gidin ve her mikro ön yüzün bağımlılıklarını yükleyin:
3. İlk olarak konteyner uygulamayı (Port 4200) başlatın, ardından diğer mikro ön yüzler gibi angular-mfe (Port 4201), react-mfe (Port 4204) başlatın.
Bölüm 2: Modül Federasyonu Nasıl Eklenir
1. `@angular-architects/module-federation`’ı konteyner ve mikro ön yüze yükleyin:
veya her uygulamada modül federasyonu bağımsız olarak eklemek için aşağıdaki komutu kullanabilirsiniz, bu port numarası ve proje adı sorar:
Bu, react kullanırken de gereklidir.
2. Projenin angular-mfe kısmına geçin ve oluşturulan yapılandırma dosyası webpack.config.js’yi açın. Bu dosya modül federasyonu yapılandırmasını içerir. Exposes nesnesine, hangi modülü açığa çıkarmak veya diğer MF’leri erişilebilir hale getirmek istiyorsanız, ekleyin örneğin):
Burada app module’ü ./Module Adı altında açığa çıkardım. Dolayısıyla, konteyner bu yolu kullanarak onu yükleyebilir.
Not. App module’ü açığa çıkarmak istiyorsanız, yönlendirme dosyasında RouterModule.forRoot(routes) yerine RouterModule.forChild(routes) kullanmalısınız.
3. Projenin react-mfe kısmına geçin ve oluşturulan yapılandırma dosyası webpack.config.js’yi açın. Bu dosya modül federasyonu yapılandırmasını içerir. Exposes nesnesine, hangi modülü açığa çıkarmak veya diğer MF’leri erişilebilir hale getirmek istiyorsanız, ekleyin örneğin):
4.1) React için bazı ek webpack paketlerini eklemeniz gereklidir:
angular-mfe modülüne konteyner uygulamasında iki yoldan erişebiliriz.
Angular-mfe uygulamasına geçin ve webpack.config.js dosyasını açın
5.2) Container uygulamasına geçiş yapın ve routing file dosyasını açın:
Bölüm 3: Deneyin
1. `angular-container`, `angular-mfe` ve `react-mfe`’yi yan yana başlatın:
Konteyner hala mikro ön yüzü yükleyebilmelidir.
Yukarıda belirtilen yapılandırma dosyalarında tanımlanan isimlerin içeri aktarılan URL’yi içerdiğini unutmayın.