0Pricing
React Academy · Lektion

Module Federation: Dynamische Runtime-Imports

Verstehen Sie, wie Webpack Module Federation Remote-Module zur Laufzeit lädt, ohne sie in das Host-Bundle aufzunehmen.

Module Federation: Dynamische Runtime-Imports ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Das Problem, das Module Federation löst

In einer Frontend-Organisation mit mehreren Teams müssen mehrere unabhängig bereitgestellte Anwendungen häufig UI-Komponenten und Hilfsfunktionen gemeinsam nutzen. Die Veröffentlichung über npm erfordert eine Versionsanhebung, ein neues Release und eine vollständige erneute Bereitstellung jeder konsumierenden Anwendung. Dadurch entstehen eine enge Kopplung zwischen den Teams und langsame Iterationszyklen.

Der npm-Ansatz und seine Nachteile

Der traditionelle Ansatz, gemeinsam genutzten Code als npm-Paket zu veröffentlichen, bedeutet, dass eine Aktualisierung einer gemeinsam genutzten Button-Komponente Folgendes erfordert: das npm-Paket aktualisieren, eine neue Version veröffentlichen, die package.json jeder konsumierenden Anwendung aktualisieren sowie jede konsumierende Anwendung neu erstellen und bereitstellen. Module Federation macht all diese Schritte überflüssig.

Was Module Federation leistet

Module Federation ermöglicht es einer Anwendung (einem „remote“), JavaScript-Module bereitzustellen, die eine andere Anwendung (ein „host“) zur Laufzeit lädt und ausführt, ohne den host neu zu erstellen oder bereitzustellen. Beim Laden der host-Anwendung werden die Module des remote dynamisch und bei Bedarf abgerufen.

Native Unterstützung in Webpack 5

Webpack 5 führte Module Federation als integrierte Kernfunktion über das ModuleFederationPlugin ein. Vor Webpack 5 erforderten ähnliche Muster eine komplexe manuelle Konfiguration oder Plugins von Drittanbietern. Das Plugin übernimmt die gesamte dynamische Ladefunktion und die Verwaltung des gemeinsamen Scopes automatisch.

Schlüsselkonzepte: Remotes

Ein remote ist eine unabhängig bereitgestellte Anwendung, die ein oder mehrere Module – React-Komponenten, Hilfsfunktionen oder vollständige Feature-Seiten – für andere Anwendungen zur Nutzung bereitstellt. Der remote erstellt ein remoteEntry.js-Manifest, das beschreibt, welche Module bereitgestellt werden und wie sie geladen werden.

Schlüsselkonzepte: Hosts

Ein host ist eine Anwendung, die Module von einem oder mehreren remotes nutzt. Der host referenziert die remotes in seiner Webpack-Konfiguration anhand ihres Namens und ihrer URL. Wenn der Code des host ein Modul eines remote importiert, ruft die Module-Federation-Laufzeitumgebung es dynamisch von der URL des remote ab und führt es aus.

Schlüsselkonzepte: Gemeinsam genutzte Module

Gemeinsam genutzte Module sind Bibliotheken wie React und React DOM, die nur einmal geladen werden sollten, selbst wenn sowohl der host als auch der remote sie enthalten. Indem React als gemeinsam genutztes Singleton markiert wird, stellt Module Federation sicher, dass nur eine React-Version ausgeführt wird – das ist entscheidend, da Reacts Hooks bei mehreren Instanzen nicht funktionieren.

Das Manifest remoteEntry.js

Beim Erstellen eines remote generiert Webpack eine Datei namens remoteEntry.js am konfigurierten Speicherort. Diese Datei ist ein schlankes Manifest und Bootstrap-Skript: Sie legt fest, welche Module der remote bereitstellt, listet deren Chunk-URLs auf und initialisiert den gemeinsamen Scope. Der host lädt diese Datei zuerst herunter, um zu ermitteln, welche Module der remote anbietet.

Mechanik des Ladens zur Laufzeit

Wenn der host auf einen Import aus einem remote-Modul stößt, prüft er, ob der Code des remote bereits geladen wurde. Falls nicht, ruft er remoteEntry.js von der URL des remote ab, initialisiert den gemeinsamen Scope (einschließlich der Aushandlung von Versionen gemeinsam genutzter Bibliotheken) und lädt anschließend den spezifischen Chunk herunter, der das angeforderte Modul enthält, und führt ihn aus.

Unabhängige Bereitstellung in der Praxis

Ein Team stellt eine neue Version seines remote (mit einer aktualisierten Button-Komponente) bereit, ohne die host-Anwendung anzupassen. Der nächste Benutzer, der den host lädt, erhält automatisch den neuen Button, da der host immer die aktuelle remoteEntry.js-URL abruft. Kein erneuter Build des host, keine erneute Bereitstellung des host, keine Abstimmung erforderlich.

Module Federation im Vergleich zu iframes

Ein älteres Micro-Frontend-Muster verwendet iframes, um den von Teams verwalteten Bereichen Isolation zu bieten. Iframes bieten eine starke Isolation, erschweren jedoch gemeinsam genutzten State, URL-Routing und Styling erheblich. Module Federation hält alles im selben JavaScript-Kontext und ermöglicht dadurch gemeinsames Routing, gemeinsam genutzten Authentifizierungsstatus und einheitliches Styling.

Remote-Manifest von Module Federation

Welche Rolle spielt remoteEntry.js in Module Federation?

Zusammenfassung der Lektion

Module Federation löst das Problem der unabhängigen Bereitstellung gemeinsam genutzten Frontend-Codes, indem es das Laden von Modulen zur Laufzeit ermöglicht. Remotes stellen Module über remoteEntry.js bereit; Hosts nutzen sie dynamisch, ohne neu erstellt werden zu müssen. Gemeinsam genutzte Singletons (React, React DOM) verhindern das doppelte Laden von Bibliotheken. Diese Architektur ermöglicht eine tatsächlich unabhängige Bereitstellung: Aktualisieren Sie ein remote, und alle host-Anwendungen sehen die Änderung sofort.

Häufig gestellte Fragen

Ist die Lektion „Module Federation: Dynamische Runtime-Imports“ kostenlos?

Ja — der vollständige Text von „Module Federation: Dynamische Runtime-Imports“ 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 „Module Federation: Dynamische Runtime-Imports“?

Verstehen Sie, wie Webpack Module Federation Remote-Module zur Laufzeit lädt, ohne sie in das Host-Bundle aufzunehmen. 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 1 von 4.

Wie lange dauert die Lektion „Module Federation: Dynamische Runtime-Imports“?

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