0Pricing
React Academy · Ders

MFE'ler Arasında Paylaşılan Durum ve Yönlendirme

Mikro ön uçlar arasında genel bir olay veri yolu veya context paylaşın ve istemci tarafı yönlendirmeyi eşgüdümleyin.

MFE'ler Arasında Paylaşılan Durum ve Yönlendirme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. 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.

Durum Paylaşımı Sorunu

Farklı paketlerdeki mikro ön uçlar React durumunu veya bağlamını doğrudan paylaşamaz. Alternatif stratejilere ihtiyaç duyarlar: özel olaylar, paylaşılan depolar, URL veya yayınlama/abone olma olay veri yolu.

Tarayıcı Özel Olayları

Mikro ön uçları birbirine bağımlı hâle getirmeden aralarında basit bir olay veri yolu oluşturmak için tarayıcının CustomEvent API'sini kullanın.

// Remote emits:
window.dispatchEvent(new CustomEvent('cart:add', { detail: { productId: '123' } }));

// Host listens:
useEffect(() => {
  const handler = (e: CustomEvent) => addToCart(e.detail.productId);
  window.addEventListener('cart:add', handler);
  return () => window.removeEventListener('cart:add', handler);
}, []);

Paylaşılan Olay Veri Yolu Kütüphanesi

Module Federation veya URL üzerinden yüklenen tekil bir örnek aracılığıyla paylaşılan küçük bir yayınlama/abone olma kütüphanesi, tüm mikro ön uçların erişebileceği türleri belirlenmiş bir olay veri yolu sağlar.

// Singleton event bus
const bus = {
  listeners: new Map<string, Function[]>(),
  emit(event: string, data: unknown) {
    this.listeners.get(event)?.forEach(fn => fn(data));
  },
  on(event: string, fn: Function) {
    if (!this.listeners.has(event)) this.listeners.set(event, []);
    this.listeners.get(event)!.push(fn);
    return () => this.off(event, fn);
  },
  off(event: string, fn: Function) {
    const list = this.listeners.get(event) || [];
    this.listeners.set(event, list.filter(f => f !== fn));
  },
};
export default bus;

Paylaşılan Durum Olarak URL

URL (yol + sorgu parametreleri), tüm mikro ön uçlar arasında doğal olarak paylaşılır. Seçili öğe, etkin sekme veya süzgeç değerleri gibi gezinme durumları için kullanın.

// Remote reads from URL:
const params = new URLSearchParams(window.location.search);
const productId = params.get('product');

// Remote navigates via history API (or exposes a navigate callback from host):
window.history.pushState({}, '', '/products?product=456');

Yönlendirme Mimarisi

Genellikle kabuk/ana uygulama, en üst düzey yönlendiricinin sahibi olur. Uzak mikro ön uçlar geçerli yolu ve bir navigate geri çağırmasını özellik olarak alır.

// Host passes routing control to remote:
<RemoteProductsApp
  basepath="/products"
  navigate={(path) => router.push(path)}
/>

// Remote uses basepath for its internal router:
<BrowserRouter basename={basepath}>
  <Routes>...</Routes>
</BrowserRouter>

Module Federation ile React Router

Her mikro ön uç, kendi React Router'ını temel yoluyla sınırlı olarak çalıştırabilir. Ana uygulamanın yönlendiricisi en üst düzey gezinmeyi yönetirken her uzak uygulama alt gezinmeyi bağımsız olarak yönetir.

// Remote App component:
export function ProductsApp({ basepath = '/products' }) {
  return (
    <BrowserRouter basename={basepath}>
      <Routes>
        <Route path="/" element={<ProductList />} />
        <Route path="/:id" element={<ProductDetail />} />
      </Routes>
    </BrowserRouter>
  );
}

Paylaşılan Kimlik Doğrulama Durumu

Kimlik doğrulama durumu (kullanıcı, belirteç) genellikle kabuk tarafından sahiplenilir ve uzak uygulamalara özellik olarak aktarılır ya da paylaşılan tekil bir durum deposu aracılığıyla sunulur.

// Host provides auth via props:
<RemoteCheckout
  userId={currentUser.id}
  token={accessToken}
  onLogout={handleLogout}
/>

Paylaşılan Durum Deposu Olarak Zustand

Bir Zustand durum deposu Module Federation aracılığıyla tekil örnek olarak paylaşıldığında, tüm mikro ön uçlar bellekteki aynı depo örneğinden okur.

// shared/store.ts (exposed as singleton)
import { create } from 'zustand';
export const useCartStore = create(set => ({
  items: [],
  addItem: (item) => set(state => ({ items: [...state.items, item] })),
}));

// Configured as singleton in MF shared config

Mikro Ön Uçlar Arası İletişimde Kaçınılması Gereken Kalıplar

Şunlardan kaçının: derin iç içe geçmiş geri çağırma zincirleri, dahili bileşen durumunun paylaşılması veya başka bir mikro ön ucun dahili API'lerine sıkı bağımlılık. İletişimi kapsamı geniş olmayan olaylar ve herkese açık sözleşmelerle sınırlı tutun.

Mikro Ön Uçlar Arası Etkileşimleri Sınama

Olay sözleşmelerini (olay adları, veri biçimleri) kullanıcı arayüzünden ayrı olarak sınayın. Üretici ile tüketicinin olay şeması üzerinde anlaştığını doğrulamak için sözleşme sınaması kullanın.

Hızlı Kontrol

Birbirine bağımlı hâle getirmeden birden çok mikro ön uç arasında gezinme veya süzgeç durumunu paylaşmanın en basit yolu nedir?

Özet

Durumu mikro ön uçlar arasında özel olaylar, tekil bir olay veri yolu, URL veya paylaşılan depolar (Zustand/tekil örnek) aracılığıyla paylaşın. Kabuk, en üst düzey yönlendiriciye sahip olur ve temel yol ile gezinme bilgisini uzak uygulamalara aktarır. Mikro ön uçlar arası sözleşmeleri kapsamı geniş olmayan, iyi tür tanımlı yapılar olarak tutun.

Sıkça Sorulan Sorular

“MFE'ler Arasında Paylaşılan Durum ve Yönlendirme” dersi ücretsiz mi?

Evet — “MFE'ler Arasında Paylaşılan Durum ve Yönlendirme” 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.

“MFE'ler Arasında Paylaşılan Durum ve Yönlendirme” dersinde ne öğreneceğim?

Mikro ön uçlar arasında genel bir olay veri yolu veya context paylaşın ve istemci tarafı yönlendirmeyi eşgüdümleyin. 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 3. dersidir.

“MFE'ler Arasında Paylaşılan Durum ve Yönlendirme” 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

  1. Mikro Ön Uç Kavramları ve Ödünleşimler
  2. Webpack 5 ile Module Federation
  3. MFE'ler Arasında Paylaşılan Durum ve Yönlendirme
  4. MFE'ler için Bağımsız Dağıtım ve CI Pipeline'ları
← React Academy Sayfasına Dön