0Pricing
React Academy · Ders

Webpack 5 ile Module Federation

Bileşenleri çalışma zamanında paylaşmak için Webpack Module Federation ile bir ana uygulama ve uzak uygulama yapılandırın.

Webpack 5 ile Module Federation, 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.

Module Federation'a Genel Bakış

Webpack 5 Module Federation, ayrı ayrı paketlenmiş uygulamalar arasında JavaScript modüllerini çalışma zamanında paylaşmanızı sağlar — bir uygulama bileşenleri dışa açarken diğeri bunları bir derleme adımı olmadan kullanır.

Roller: Ana Uygulama ve Uzak Uygulama

Bir uzak uygulama modülleri dışa açar. Bir ana uygulama, bir veya daha fazla uzak uygulamadaki modülleri kullanır. Bir uygulama aynı anda hem ana uygulama hem de uzak uygulama olabilir.

Uzak Uygulama Yapılandırması

Uzak uygulamanın webpack.config.js dosyasında, bileşenleri dışa açmak için ModuleFederationPlugin kullanın.

// Remote: apps/products/webpack.config.js
const { ModuleFederationPlugin } = require('webpack').container;

module.exports = {
  plugins: [
    new ModuleFederationPlugin({
      name: 'products',              // remote name
      filename: 'remoteEntry.js',    // entry file
      exposes: {
        './ProductCard': './src/components/ProductCard', // exposed module
        './CartButton': './src/components/CartButton',
      },
      shared: ['react', 'react-dom'], // share deps to avoid duplication
    }),
  ],
};

Ana Uygulama Yapılandırması

Ana uygulamanın Webpack yapılandırmasında, hangi uzak uygulamaların kullanılacağını ve bunların nereden yükleneceğini belirtin.

// Host: apps/shell/webpack.config.js
new ModuleFederationPlugin({
  name: 'shell',
  remotes: {
    products: 'products@http://localhost:3001/remoteEntry.js',
    cart: 'cart@http://localhost:3002/remoteEntry.js',
  },
  shared: ['react', 'react-dom'],
})

Uzak Modülü Kullanma

Uzak modülleri, yol ön eki olarak uzak uygulamanın adını kullanarak içe aktarın. Tembel yükleme için bunları React.lazy ve Suspense ile sarın.

import React, { lazy, Suspense } from 'react';

const ProductCard = lazy(() => import('products/ProductCard'));

function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <ProductCard productId="123" />
    </Suspense>
  );
}

Bağımlılıkları Paylaşma

Paylaşılan paketleri singleton: true ile listeleyin; böylece tüm mikro ön uçlarda React'in yalnızca bir kopyası yüklenir.

shared: {
  react: { singleton: true, requiredVersion: '^18.0.0' },
  'react-dom': { singleton: true, requiredVersion: '^18.0.0' },
  '@company/design-system': { singleton: true },
},

Dinamik Uzak Uygulamalar

Uzak uygulamaları Webpack yapılandırmasında URL'leri sabit kodlamak yerine yapılandırmadan (örneğin bir bildirim uç noktasından) çalışma zamanında dinamik olarak yükleyin.

async function loadRemote(scope, module) {
  await __webpack_init_sharing__('default');
  const container = window[scope];
  await container.init(__webpack_share_scopes__.default);
  const factory = await container.get(module);
  return factory();
}

const ProductCard = React.lazy(() => loadRemote('products', './ProductCard'));

Module Federation ile TypeScript

Ana uygulamaların tam otomatik tamamlama desteği alabilmesi için dışa açılan modüllere ait tür bildirimleri oluşturmak üzere @module-federation/typescript eklentisini kullanın.

Uzak Uygulama Hataları için Hata Sınırları

Uzak bileşenleri hata sınırlarıyla sarın. Bir uzak uygulama yüklenemezse ana uygulama çökmek yerine kontrollü şekilde çalışmaya devam eder.

<ErrorBoundary fallback={<div>Product unavailable</div>}>
  <Suspense fallback={<Skeleton />}>
    <ProductCard productId={id} />
  </Suspense>
</ErrorBoundary>

Vite Module Federation

@originjs/vite-plugin-federation eklentisi, benzer bir API ile Module Federation desteğini Vite tabanlı projelere getirir.

// vite.config.ts (remote)
import federation from '@originjs/vite-plugin-federation';

export default defineConfig({
  plugins: [
    federation({
      name: 'products',
      filename: 'remoteEntry.js',
      exposes: { './ProductCard': './src/ProductCard' },
      shared: ['react'],
    }),
  ],
});

Hızlı Kontrol

Module Federation'da paylaşılan bir paket için singleton: true ayarlamak ne sağlar?

Özet

Module Federation, uzak uygulamalarda (dışa açmak için) ve ana uygulamalarda (kullanmak için) ModuleFederationPlugin kullanır. Uzak modülleri lazy() ile içe aktarın, tekrarı önlemek için react paketini tekil örnek olarak paylaşın ve kontrollü geri dönüş sağlamak için uzak uygulamaları hata sınırlarıyla sarın.

Sıkça Sorulan Sorular

“Webpack 5 ile Module Federation” dersi ücretsiz mi?

Evet — “Webpack 5 ile Module Federation” 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.

“Webpack 5 ile Module Federation” dersinde ne öğreneceğim?

Bileşenleri çalışma zamanında paylaşmak için Webpack Module Federation ile bir ana uygulama ve uzak uygulama yapılandırın. 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.

“Webpack 5 ile Module Federation” 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