0Pricing
React Academy · Lektion

Host- und Remote-React-Apps konfigurieren

Richten Sie Exposes, Remotes und gemeinsam genutzte Abhängigkeiten in webpack.config.js für eine Host-Shell und zwei React-Remotes ein.

Host- und Remote-React-Apps konfigurieren ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

remote webpack.config.js: ModuleFederationPlugin

Die remote-Anwendung fügt ihrer Webpack-Konfiguration das ModuleFederationPlugin mit drei wichtigen Eigenschaften hinzu: name (eindeutiger Bezeichner, z. B. „buttonApp“), filename („remoteEntry.js“ – die Ausgabe des Manifests) und exposes (eine Zuordnung von öffentlichen Namen zu Quelldateipfaden).

Komponenten im Remote bereitstellen

Die exposes-Konfiguration ordnet einen öffentlichen Modulpfad einer lokalen Datei zu: { './Button': './src/Button' }. Das bedeutet, dass der host 'buttonApp/Button' importieren und die Komponente aus ./src/Button.tsx erhalten kann. Sie können mehrere Komponenten, Hilfsfunktionen oder sogar vollständige Seiten bereitstellen.

Gemeinsame Konfiguration im Remote

Die Eigenschaft shared gibt Module an, die zwischen host und remote gemeinsam genutzt und nicht doppelt geladen werden sollen. Für React gilt: shared: { react: { singleton: true, requiredVersion: deps.react }, 'react-dom': { singleton: true } }. singleton:true verhindert, dass mehrere Instanzen gleichzeitig geladen werden.

Host webpack.config.js: Remotes referenzieren

Die ModuleFederationPlugin-Konfiguration der host-Anwendung enthält eine Eigenschaft remotes: { buttonApp: 'buttonApp@http://localhost:3001/remoteEntry.js' }. Der Schlüssel ist der Import-Namespace, der Wert kombiniert den Namen und die URL des remote mit @. Dadurch wird Webpack mitgeteilt, wo das remote zur Laufzeit abgerufen werden soll.

Das Remote in React verwenden

Importieren Sie die Remote-Komponente im React-Code des host mit einem dynamischen Import: const Button = React.lazy(() => import('buttonApp/Button')). Der Importpfad entspricht dem Namespace des remote und dem Namen des bereitgestellten Moduls. React.lazy sorgt dafür, dass der Import in einen separaten Code-Chunk aufgeteilt und asynchron geladen wird.

Mit Suspense umschließen

Da Remote-Module asynchron geladen werden, sollten Sie die per Lazy-Import geladene Remote-Komponente immer in eine Suspense-Grenze einschließen: Suspense fallback=Loading... /. Das Fallback wird angezeigt, während Module Federation remoteEntry.js und den Komponenten-Chunk von der URL des remote abruft.

Warum Singletons entscheidend sind

React-Hooks (useState, useContext, useEffect) benötigen eine einzige interne React-Instanz, um den Zustand von Komponenten zu verwalten. Wenn sowohl der host als auch der remote eine eigene React-Kopie laden, lösen die Hooks Fehler vom Typ „invalid hook call“ aus. singleton:true zwingt beide dazu, eine gemeinsame React-Instanz zu verwenden, und behebt diese Fehlerklasse vollständig.

Auflösen von Versionskonflikten

Wenn der host react@18.2.0 und der remote react@18.3.0 verwendet, handelt der gemeinsame Scope von Module Federation aus, welche Version verwendet wird. Mit singleton:true und requiredVersion wird typischerweise die höhere Version verwendet, sofern sie kompatibel ist. Wenn Sie statt einer festgelegten Version requiredVersion: '>=18.0.0' setzen, sind flexible Versionsbereiche möglich.

TypeScript: Moduldeklarationen

TypeScript kennt Remote-Module zur Kompilierzeit nicht. Daher führen Importe wie import('buttonApp/Button') ohne Deklarationen zu Typfehlern. Verwenden Sie @module-federation/typescript oder erstellen Sie manuell .d.ts-Dateien, die die Modultypen deklarieren. So erhalten Sie Typsicherheit für die Props von Remote-Komponenten.

Die Einrichtung lokal testen

Führen Sie beide Anwendungen gleichzeitig aus: das remote auf Port 3001 und den host auf Port 3000. Öffnen Sie den host. Seine Module-Federation-Laufzeitumgebung ruft http://localhost:3001/remoteEntry.js ab, ermittelt das Button-Modul, lädt dessen Chunk herunter und rendert es innerhalb der host-Anwendung, als wäre es eine lokale Komponente.

URL-Konfiguration für die Produktion

Ersetzen Sie in der Produktion localhost:3001 durch die URL des bereitgestellten remote. Ein gängiges Muster besteht darin, eine Umgebungsvariable für die URL des remote zu verwenden, damit CI/CD die passende URL für jede Umgebung einsetzen kann: buttonApp: 'buttonApp@' + process.env.BUTTON_REMOTE_URL + '/remoteEntry.js'.

Gemeinsam genutzte Singleton-Module

Warum muss React in der gemeinsamen Konfiguration von Module Federation als Singleton eingerichtet werden?

Zusammenfassung der Lektion

Für die Konfiguration von Module Federation benötigen sowohl der remote (mit name, filename und exposes) als auch der host (mit remotes) das ModuleFederationPlugin. Nutzen Sie Remote-Komponenten über React.lazy und einen dynamischen Import, eingeschlossen in Suspense. React und React DOM müssen als gemeinsam genutzte Singletons konfiguriert werden, um Hook-Fehler durch mehrere Instanzen zu verhindern. TypeScript-Deklarationen und Remote-URLs aus Umgebungsvariablen vervollständigen eine produktionsreife Einrichtung.

Häufig gestellte Fragen

Ist die Lektion „Host- und Remote-React-Apps konfigurieren“ kostenlos?

Ja — der vollständige Text von „Host- und Remote-React-Apps konfigurieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Host- und Remote-React-Apps konfigurieren“?

Richten Sie Exposes, Remotes und gemeinsam genutzte Abhängigkeiten in webpack.config.js für eine Host-Shell und zwei React-Remotes ein. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Host- und Remote-React-Apps konfigurieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Module Federation: Dynamische Runtime-Imports
  2. Host- und Remote-React-Apps konfigurieren
  3. Zustand und Routing zwischen Remotes teilen
  4. Versionierung, Deployment und Orchestrierung
← Zurück zu React Academy