Ana Makine ve Uzak React Uygulamalarını Yapılandırma
Bir ana kabuk ve iki uzak React uygulaması için webpack.config.js içinde dışa aktarımları, uzakları ve paylaşılan bağımlılıkları kurun.
Ana Makine ve Uzak React Uygulamalarını Yapılandırma, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Uzak webpack.config: ModuleFederationPlugin
Uzak uygulama, webpack yapılandırmasına ModuleFederationPlugin'ı üç temel özellikle ekler: name (benzersiz tanımlayıcı, ör. "buttonApp"), filename ("remoteEntry.js" — bildirim çıktısı) ve exposes (genel adları kaynak dosyası yollarıyla eşleyen bir harita).
Uzak Uygulamadan Bileşenleri Dışa Açma
exposes yapılandırması, genel bir modül yolunu yerel bir dosyayla eşler: { './Button': './src/Button' }. Bu, ana uygulamanın 'buttonApp/Button' içe aktarmasını ve bileşeni ./src/Button.tsx dosyasından almasını sağlar. Birden çok bileşeni, yardımcı programı veya hatta tüm sayfaları dışa açabilirsiniz.
Uzak Uygulamada Paylaşılan Yapılandırma
shared özelliği, yinelenmek yerine ana uygulama ile uzak uygulama arasında paylaşılması gereken modülleri Module Federation'a bildirir. React için: shared: { react: { singleton: true, requiredVersion: deps.react }, 'react-dom': { singleton: true } }. singleton:true, birden çok örneğin aynı anda yüklenmesini önler.
Ana webpack.config: Uzak Uygulamalara Başvurma
Ana uygulamanın ModuleFederationPlugin yapılandırması bir remotes özelliği içerir: { buttonApp: 'buttonApp@http://localhost:3001/remoteEntry.js' }. Anahtar, içe aktarma ad alanıdır; değer ise uzak uygulamanın adıyla URL'sinin @ işareti kullanılarak birleştirilmiş hâlidir. Bu, Webpack'e uzak uygulamayı çalışma zamanında nereden alacağını bildirir.
React'te Uzak Uygulamayı Kullanma
Ana uygulamanın React kodunda, uzak bileşeni dinamik içe aktarmayla yükleyin: const Button = React.lazy(() => import('buttonApp/Button')). İçe aktarma yolu, uzak uygulamanın ad alanı ile dışa açılan modül adını eşleştirir. React.lazy, içe aktarmayı kod bölümlendirmeli ve eşzamansız olarak yüklenen hâle getirir.
Suspense ile Sarmalama
Uzak modüller eşzamansız yüklendiğinden, tembel yüklenen uzak bileşeni her zaman bir Suspense sınırıyla sarmalayın: Suspense fallback=Loading... /. Geri dönüş içeriği, Module Federation uzak URL'den remoteEntry.js dosyasını ve bileşen parçasını alırken oluşturulur.
Tekil Modüller Neden Kritik
React'in kancaları (useState, useContext, useEffect), bileşen durumunu izlemek için tek bir dahili React örneğine bağlıdır. Hem ana uygulama hem de uzak uygulama kendi React kopyasını yüklerse kancalar "geçersiz kanca çağrısı" hataları verir. singleton:true, bunları tek bir React örneğini paylaşmaya zorlayarak bu hata sınıfını tamamen çözer.
Sürüm Çakışmalarını Çözme
Ana uygulama react@18.2.0, uzak uygulama ise react@18.3.0 kullandığında Module Federation'ın paylaşılan kapsamı hangi sürümün kullanılacağını uzlaştırır. singleton:true ve requiredVersion ile genellikle uyumluysa daha yüksek sürümü kullanır. Sabitlenmiş bir sürüm yerine requiredVersion: '>=18.0.0' ayarlamak esnek sürüm aralıklarına izin verir.
TypeScript: Modül Bildirimleri
TypeScript, derleme zamanında uzak modülleri bilmez; bu nedenle import('buttonApp/Button') gibi içe aktarmalar bildirimler olmadan tür hataları verir. @module-federation/typescript kullanın veya modül türlerini bildiren .d.ts dosyalarını elle oluşturun. Böylece uzak bileşen özellikleri için tür güvenliği elde edersiniz.
Kurulumu Yerel Olarak Sınama
Her iki uygulamayı aynı anda çalıştırın: uzak uygulama 3001, ana uygulama 3000 numaralı bağlantı noktasında çalışsın. Ana uygulamayı açın — Module Federation çalışma zamanı http://localhost:3001/remoteEntry.js adresini alır, Button modülünü keşfeder, modülün parçasını indirir ve onu ana uygulamanın içinde yerel bir bileşenmiş gibi oluşturur.
Üretim URL'si Yapılandırması
Üretimde localhost:3001 yerine dağıtılmış uzak uygulamanın URL'sini kullanın. Yaygın bir yaklaşım, uzak uygulamanın URL'si için bir ortam değişkeni kullanmaktır; böylece CI/CD her ortam için doğru URL'yi ekleyebilir: buttonApp: 'buttonApp@' + process.env.BUTTON_REMOTE_URL + '/remoteEntry.js'.
Tekil Paylaşılan Modüller
Module Federation'ın paylaşılan yapılandırmasında React neden tekil olarak yapılandırılmalıdır?
Ders Özeti
Module Federation'ı yapılandırmak, hem uzak uygulamada (name, filename, exposes ile) hem de ana uygulamada (remotes ile) ModuleFederationPlugin gerektirir. Uzak bileşenleri React.lazy ve Suspense ile sarmalanmış dinamik içe aktarma kullanarak tüketin. React ve React DOM, birden çok örnekten kaynaklanan kanca hatalarını önlemek için paylaşılan tekil modüller olmalıdır. TypeScript bildirimleri ve ortam değişkeni tabanlı uzak URL'ler, üretime hazır kurulumu tamamlar.
Sıkça Sorulan Sorular
“Ana Makine ve Uzak React Uygulamalarını Yapılandırma” dersi ücretsiz mi?
Evet — “Ana Makine ve Uzak React Uygulamalarını Yapılandırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“Ana Makine ve Uzak React Uygulamalarını Yapılandırma” dersinde ne öğreneceğim?
Bir ana kabuk ve iki uzak React uygulaması için webpack.config.js içinde dışa aktarımları, uzakları ve paylaşılan bağımlılıkları kurun. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Ana Makine ve Uzak React Uygulamalarını Yapılandırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Modül Federasyonu: Dinamik Çalışma Zamanı İçe Aktarmaları
- Ana Makine ve Uzak React Uygulamalarını Yapılandırma
- Uzak Uygulamalar Arasında Durum ve Yönlendirme Paylaşma
- Sürümleme, Dağıtım ve Düzenleme