Zum Hauptinhalt springen

Was ist ein Micro Frontend und wie es funktioniert

Erstelle dir ein Verständnis für Micro Frontends, vergleiche die Kernarchitekturmuster, verstehe die Vor- und Nachteile und erforsche, wie du die Methode in Capacitor und Electron-Anwendungen anwenden kannst

Was ist ein Micro Frontend und wie es funktioniert

Ein Micro Frontend ist eine Benutzeroberfläche, die aus unabhängig besitzbaren und bereitstellbaren Frontend-Anwendungen besteht. Die Methode wurde von Thoughtworks offiziell vorgestellt 2016, und ein 2024 Umfrage zufolge, dass 23.6% von Befragten hatten in den letzten 12 Monaten Microfrontends verwendet, im Vergleich zu 75.4% in 2022. State of Frontend Daten

Sie mögen bereits mit diesem Problem zu kämpfen haben. Drei Produktteams teilen sich eine gemeinsame Frontend-Repository und warten auf den gleichen Release-Train, selbst wenn ein Team die Kasse ändert, ein anderes die Profile aktualisiert und das dritte die Marketing-Seiten anpasst. Eine Microfrontend-Architektur trennt diese Produktbereiche so, dass Teams sie unabhängig besitzen, testen und veröffentlichen können, während die Benutzer immer noch eine Anwendung erleben.

Dieser Unterschied ist wichtig. Microfrontends sind nicht einfach kleinere Ordner, Komponenten oder Pakete. Ihr zentraler Zweck ist organisatorische und Release-Independenz, unterstützt durch technische Grenzen, die die Eigentümerschaft explizit machen. Die Architektur kann eine Koordinierungsbottleneck entfernen, aber sie führt auch zu Verantwortlichkeiten für Runtime-Integration, Abhängigkeitsgovernance, Tests, Sicherheit und Leistung.

Tabelle der Inhalte

Das Konzept des Micro Frontends verstehen

Von einem Frontend zu mehreren eigenen Anwendungen

Ein traditionelles Frontend hat oft nur einen Repository, eine Build- und eine Bereitstellungs-Grenze. Auch wenn der code in saubere Feature-Ordner aufgeteilt ist, hängen die Teams hinter diesen Ordnern möglicherweise immer noch von derselben Pipeline und Release-Scheduler ab. Ein kleiner Änderung in einem Bereich kann eine vollständige Anwendungsbuild, gemeinsame Regressionstests und Koordination über alle Teams auslösen.

Ein Micro Frontend teilt die Browseranwendung um Geschäftliche FähigkeitenDie Checkout-Team verantwortet den Checkout, das Profilteam die Kontoeinstellungen und das Marketingteam den Werbematerial.

Martin Fowler definiert das Muster als “ein architektonischer Stil, bei dem unabhängig lieferbare Frontend-Anwendungen in ein größeres Ganzes komponiert werden” in seinem grundlegenden Leitfaden zur Mikrofrontends-Architektur. Der Ausdruck “unabhängig lieferbar” trägt mehr Gewicht als “Frontend-Anwendungen”. Ohne einen unabhängigen Bereitstellungsgrenze haben Sie möglicherweise einen modularen Monolithen anstatt ein Mikrofrontends-System.

Stressed office workers sitting at desks holding papers representing different micro frontend development teams in an office.

Eine analoge Verkaufsstätte

Denken Sie an einen Kaufhaus. Ein Team verantwortet das Eingangsbereich, ein anderes die Kasse und ein drittes die Rückgabestelle. Der Kunde sieht ein Kaufhaus, aber jede Abteilung hat unterschiedliche Prozesse, Verantwortlichkeiten und Mitarbeiter. Ein Mikrofrontends funktioniert ähnlich: Der Browser renderet eine Produkt-Erfahrung, während mehrere Teams unterschiedliche Schnittstellen hinter den Kulissen betreiben.

Der App-Shell verantwortet normalerweise das gemeinsame Rahmenelement, die Navigation, den Authentifizierungscontext und die Routenentscheidungen. Ein Mikrofrontends verantwortet die Seite oder die Fähigkeit innerhalb dieses Rahmens. Die Teams stimmen sich auf die Grenzen zwischen ihnen ab, müssen aber nicht jede Implementierungsdetails teilen.

Der Begriff wurde mit der Verlängerung des microservices-Denkens auf den Browser verbunden nachdem Thoughtworks ihn in seinem November 2016 Technology Radar hervorgehoben hatte nachdem Fowler seine Entwicklung von Assess zu Trial und dann Adopt dokumentiert hatte, was die Bewegung des Musters von einem sich entwickelnden Verfahren zu einem etablierteren architektonischen Option beschreibt eine umfassendere praktische Übersicht über skalierbare Webentwicklung durch Nerdifyes hilft, das Muster mit benachbarten Ansätzen wie der Pluginarchitektur zu vergleichen, die in diesem Pluginarchitektur-Leitfaden.

besonders wichtig ist, dass Micro-Frontends keine Standard-Upgrade für jeden Interface sind

Sie machen nur Sinn, wenn die Teamgrenzen und die Releasegrenzen echte Schmerzen verursachen

Der Aufwand ist nur gerechtfertigt, wenn die Unabhängigkeit es wert ist, mehr Verträge, Assets, Laufzeitfehler und Betriebswerkzeuge zu verwalten

Wie Micro-Frontend-Architektur funktioniert Der Shell und seine FragmenteEin funktionierendes System beginnt normalerweise mit einem App-Shell, auch als Container oder Orchestrator bezeichnet, der die gemeinsame Layout renderet, die Routen festlegt, die Authentifizierungsanforderungen bereitstellt und gemeinsame Schnittstellen wie Navigation oder Benachrichtigungen bereitstellt

Jeder Fragment ist eine unabhängig verwaltete Anwendung. Es kann in einem separaten Repository leben, seine eigene CI-Pipeline verwenden, seine eigene Version veröffentlichen und eine Bundle, ein Fragment, ein Web-Komponente oder ein Remote-Modul bereitstellen. Die Shell setzt diese Teile im Browser zusammen, entweder beim Laden der Seite oder wenn eine Route sie erfordert.

Eine Diagramm, das die Mikro-Frontend-Architektur mit einer App-Shell, die mit Einkaufswagen, Benutzeravatar und Megaphon-Komponenten verbunden ist, illustriert.

Eine Grenze ist nur dann nützlich, wenn die Teams darauf vertrauen können. Die Shell und jedes Fragment benötigen eine explizite Vereinbarung, die sich auf das Einhängen, die Routenbesitztümer, die Ladezustände, die Fehlerbehandlung, die Design-Token, die Barrierefreiheitserwartungen und die unterstützten Abhängigkeitsversionen bezieht.

Praktische Regel: Teilen Sie Vereinbarungen und visuelle Primitiven absichtlich. Teilen Sie nicht nur die Laufzeit-Implementierungsdetails, weil zwei Teams derzeit denselben Framework verwenden.

Kommunikation ohne Wiedergeburt des Monolithen

Fragmente müssen manchmal miteinander kommunizieren. Ein Checkout-Slice mag wissen müssen, dass ein Benutzer sich angemeldet hat, während ein Profil-Slice ein Konto aktualisiertes Ereignis veröffentlichen muss. Teams können benutzerdefinierte Browser-Ereignisse, einen gemeinsamen Speicher, URL-Parameter oder injizierte Dienste verwenden.

Jede Option schafft ein anderes Kopplungsprofil:

  • Benutzerdefinierte Ereignisse halten die Eigentümerschaft getrennt, aber die Teams müssen Ereignisnamen, Payload-Formen und -Zeitpunkte dokumentieren.
  • Gemeinsame Speicher vereinfachen die koordinierte Zustandsverwaltung, aber sie können die zentrale Abhängigkeitsgraphik wiederherstellen, die die Architektur reduzieren sollte.
  • Parameter der URL fungieren gut für Navigation und teilerfassbare Zustände, obwohl sie nicht für jede Interaktion geeignet sind.
  • eingesetzte Dienste bieten kontrollierte Fähigkeiten, aber die Hülle muss diese Dienstverträge aufrechterhalten.

Die Hülle sollte nur das koordinieren, was zum gesamten Anwendungsprogramm gehört. Wenn sie für jeden Fragmentzustand und Geschäftsregel verantwortlich wird, ist sie ein verteiltes Monolith mit einem komplexeren Bereitstellungsprozess.

Die historische Entwicklung, die von Fowler dokumentiert wurde, erklärt, warum das Muster oft mit Microservices verglichen wird. Beide Ansätze trennen die Verantwortung und die Lieferung, aber Microfrontends wenden diese Unabhängigkeit auf die Browseroberfläche an. In der aktuellen Werkzeugkiste Modul-Föderation ist ein prominentes Feature geworden, während Single-spa eine Orchestrierungsoption für Teams bleibt, die eine lebenszyklusbasierte Anwendungsregistrierung wünschen.

Ein Beispiel dafür ist die Auslieferung eines Zahlungsflusses durch das Checkout-Team ohne das Katalogfragment neu zu bauen. Das Katalogteam kann weiterhin auf einem langsameren Release-Cadence bleiben, weil die Hülle jede genehmigte Slice nach ihrer Laufzeit-Konfiguration lädt. Diese unabhängige Lieferungsgrenze, nicht die visuelle Erscheinung getrennter Komponenten, ist der Hauptvorteil der Architektur.

Ein Team, das die umgebende Plattform bewertet, muss auch Infrastruktur für Anwendungen der Frontend-Systemeberücksichtigen, weil Repositories und Frameworks allein keine zuverlässige Komposition bieten.

Vergleich von Core-Micro-Frontend-Mustern

Es gibt kein einzelnes Integrationsmechanismus, das alle Micro-Frontend-Probleme löst. Wählen Sie, indem Sie Isolation, Kommunikation, Abhängigkeitsfreigabe, Browserverhalten und Betriebsaufsicht vergleichen, anstatt das modischste Werkzeug auszuwählen.

Muster Isolation Integrationsmodell Geteilte Abhängigkeiten Leistung Beste Wahl
Iframes Starker Prozess und Dokumenten-Isolation Einbettetes Dokument mit Quer-Framemessaging Keine durch Voreinstellung Kann Last und Kommunikationsüberhead hinzufügen Unvertrauenswürdige, veraltete oder stark isolierte Erfahrungen
Web-Komponenten Gekapseltes Element und, soweit verwendet, Shadow DOM-Styling Benutzerdefinierte Elemente, die vom Shell montiert werden Gemeinsame Design-Tokens und Browser-APIs Oft vorhersehbar, aber je nach Komponentengröße abhängig Teams, die sich auf Standards ausrichten und Framework-Flexibilität benötigen
Modul-Föderation Moderate Laufzeit-Isolation Remote-Module, die bei Laufzeit geladen und montiert werden Abhängigkeiten, die explizit verhandelt oder gebündelt werden Eine effiziente Ladezeit und eine Duplizierungssteuerung Eng mit Anwendungen verbundene Anwendungen mit unabhängigen Releases
single-spa Ein Grenzschwellenmodell für die Orchestrierung anstatt ein vollständiges Isolationsmodell Anwendungen registriert über Lebenszyklus-Hooks Abhängig von den Anwendungen und der Root-Konfiguration Abhängig von Ladevorschriften und Framework-Komposition Multi-Framework-Orchestrierung mit route-basierten Aktivierungen

Iframes

Ein Iframe bietet die stärkste Grenze in diesem Vergleich. Die eingebettete Anwendung hat ihr eigenes Dokument, Styles und JavaScript-Umgebung, sodass sie das DOM der Host-Seite nicht versehentlich mutiert. Eine kontrollierte Kommunikationsroute kann durch Cross-Window-Messaging erstellt werden.

Dieses Isolationsniveau macht Iframes für Legacy-Systeme, Partner-Erfahrungen oder Inhalte, die getrennt bleiben müssen, nützlich. Der Preis erscheint in der responsiven Layoutgestaltung, Navigation, Barrierefreiheit, Fokusverwaltung und gemeinsamer Authentifizierung. Ein Checkout-Iframe kann wie eine fremde Oberfläche wirken, wenn Host- und eingebettete Anwendung nicht sorgfältig koordinieren.

Weboberflächen

Web-Komponenten verwenden Browser-Standards anstatt, dass jede Mannschaft denselben Framework adoptieren muss. Benutzerdefinierte Elemente definieren eine stabile Montagefläche, und das Shadow DOM kann Stilverlust einschränken. Der Shell muss jedoch noch die Anwendungssteuerung, die Ladezustände, die Fehlergrenzen und die gemeinsamen Design-Token verwalten.

Diese Option funktioniert gut, wenn Teams Framework-Flexibilität ohne die Browser-Ladung ganzer Anwendungs-Runzeit für jeden Abschnitt wollen. Sie löst jedoch nicht automatisch die Abhängigkeit der Größe, die Zustandskommunikation oder die Governance.

Modul-Föderation

Modul-Föderation, eingeführt mit Webpack 5 und unterstützt von Werkzeugen wie Vite und Rspack, lädt kompilierte Module aus remote Eingängen bei Laufzeit. Sie bietet eine enge Integration, die gemeinsame Komponenten und koordinierte Navigation natürlich anfühlt als sie es oft mit iframes tut.

Diese Bequemlichkeit schafft Verantwortung. Teams benötigen kompatible offengelegte Schnittstellen, Regeln für gemeinsame Abhängigkeiten, remote Versionen-Handling und einen Wiederherstellungsplan, wenn ein remote nicht laden kann. Die Differenz zwischen monolithischer und mikrodienstlicher Architektur bietet nützliches Kontext für die Trennung der Bereitstellung Unabhängigkeit von einfachem code Zerlegung.

single-spa

single-spa fungiert als framework-agnostischer Koordinator. Teams registrieren Anwendungen und Lebenszyklus-Hooks, dann aktiviert die root-Konfiguration sie entsprechend Routen oder anderen Bedingungen. Es kann Anwendungen koordinieren, die mit verschiedenen Frameworks erstellt wurden, aber es entfernt nicht die Notwendigkeit von Verträgen, Abhängigkeits-Politiken, Leistungsbudgets oder Sicherheitskontrollen.

Teams können diese Mechanismen kombinieren. Zum Beispiel könnte ein single-spa-Root Routen koordinieren, Module Federation könnte remote Module bereitstellen und Web-Components könnten die öffentliche Montagefläche definieren. Diese Combination kann mächtig sein, aber jede hinzugefügte Schicht erhöht die Anzahl der Verhaltensweisen, die Entwickler verstehen und testen müssen.

Vorteile Handlungen und verborgene Risiken

Microfrontends verschieben Entscheidungen über Grenzen hinweg. Sie können die Auswirkungen eines Releases verringern und den Teams mehr Kontrolle geben, aber das System muss dann mehr Artefakte, Verträge und Laufzeitbedingungen verwalten.

Dimension Vorteil Handlung / verborgenes Risiko
Team-Autonomie Teams besitzen einen Geschäftsabschnitt von Anfang bis Ende Teams müssen separate Pipelines, On-Call-Besitz und Release-Discipline aufrechterhalten
Deployments Ein Fragment kann ohne das Wiederaufbauen der gesamten Oberfläche verschickt werden Releases werden nicht mehr atomar, sodass inkompatible Versionen in der Produktion auftreten können
Fehlerisolierung Ein fehlgeschlagener Remote kann mit einem Fallback enthalten werden Poor Fehlergrenzen können Navigation oder kritische Reiseabschnitte immer noch unbenutzbar machen
Leistung context: Homepage problem/solution section. Role: Section or page heading. Seen in: page premium-support.astro. Message key `ps_help_performance_title` (Ps Help Performance Title) More requests, duplicated framework code, and remote initialization can hurt runtime performance
Mehr Anfragen, duplizierte Framework __CAPGO_KEEP_0__ und Remote-Initialisierung können die Laufzeitleistung beeinträchtigen Technologieauswahl Teams können verschiedene Frameworks verwenden, wo die Grenzen es zulassen
Debugging, Barrierefreiheit, Designkonsistenz und Personalbeschaffung werden bei einer gemischten Stack schwieriger Sicherheit Der Shell kann remote code ausführen, die sie nicht ausreichend überprüft hat
Governance Gemeinsame Standards können ein kohärentes Produkt erhalten Designsysteme, Abhängigkeitsregeln, Verträge und Plattformunterstützung erfordern eine ständige Koordination

Die Leistungskostenrechnung

Unabhängige Slices erzeugen normalerweise getrennt gebaute Assets. Ohne sorgfältige Ladevorschriften kann der Browser mehr Dateien anfordern, mehr code initialisieren oder duplizierte Framework-Abhängigkeiten herunterladen. Die Leistungshinweise für Microfrontends betonen die bedarfsgesteuerte Laden, die sorgfältige Abhängigkeitsfreigabe, die Modul-Ebene-Caching und die Fehlerisolierung.

Ein praktischer Entwurf beginnt mit einer Basis für das bestehende Anwendungsprogramm. Messen Sie die Routenstartzeit, die Bundlezusammensetzung, die remote Laden, die Initialisierung und die Benutzerfreundlichen Fehler. Dann setzen Sie Budgets für die Shell und jede hohen-Betriebs-Slice. Die Lazy-Laden hilft nur, wenn die Anwendung nicht die kritische Reise auf einer langen Kette von remote Modulen blockiert.

Sicherheit an den Nahtstellen

Ein remote Modul ist nicht automatisch sicher, weil es einen separaten Repository hat. Die Shell kann code ausführen, die sie nicht überprüft hat, und eine Frontend-Grenze ersetzt die Autorisierung bei APIs oder Token-Diensten nicht. Sicherheitsorientierte Micro-Frontend-Analyse Hervorhebt, warum Vertrauen, Signierung, Integritätsprüfungen und Autorisierung Aufmerksamkeit im Design benötigen, bevor Teams runtime code verteilen.

Versionsschleife schafft einen anderen Risikoklasse. Ein Fragment kann alleine funktionieren, aber scheitern, wenn es sich mit einer anderen Shell-Version, einer gemeinsamen Bibliothek, einem Design-Token-Set oder einem Ereignis-Payload trifft. Nx’s Architektur-Leitfaden identifiziert Koordination, Umgebungs-Konfiguration, Anwendungs-Effizienz und Wiederverwendbarkeit als anhaltende Herausforderungen.

Die Architektur löscht die Koordination nicht. Sie ändert die Koordination von Release-Meetings in Verträge, Automatisierung, Beobachtbarkeit und Governance.

Teams benötigen auch eine klare Verantwortlichkeit für gemeinsame Abhängigkeiten, Barrierefreiheits-Überprüfungen, Notfallreaktionen und Rollover-Entscheidungen. Wenn niemand die Plattform-Schicht besitzt, lösen jedes Produkt-Team die Komposition anders, und die Benutzer erleben die resultierende Inkonsistenz als eine gebrochene Anwendung.

Testen von Bereitstellung und Migration-Praktiken

Der Test muss die Art und Weise widerspiegeln, wie die Anwendung läuft. Ein Fragment, das seine eigenen Einheitstests besteht, kann immer noch fehlschlagen, wenn der Shell eine geänderte Route, ein unerwartetes Authentifizierungs-Zustand oder eine andere gemeinsame Abhängigkeit liefert.

Erstelle ein schichtiges Testsystem

Beginne mit isolierten Tests für jedes Fragment. Diese Tests validieren die Darstellung, Geschäftsregeln, Tastaturverhalten, Ladezustände und lokale Fehlerbehandlung ohne die vollständige Shell zu erfordern.

Vertrags-Tests sitzen darüber. Sie überprüfen die Schnittstelle zwischen der Shell und einem Fragment, einschließlich Einmontage-Eingaben, Routenmustern, emittierter Ereignisse, erwarteter Payloads, Authentifizierungsannahmen und Fallback-Verhalten. Vertrags-Tests sollten vor der Produktion fehlschlagen, wenn ein Team eine Schnittstelle ändert, die ein anderes Team konsumiert.

Shell-Integrationstests laden dann echte Fragment-Artikel in einer repräsentativen Komposition. Sie sollten Routen, Authentifizierungsübergänge, gemeinsame Navigation, Ausfallfehler und Versionenkombinationen abdecken. End-to-End-Tests stehen oben, da sie komplexe Reisen wie das Durchblättern eines Produkts, das Anmelden und das Abschließen des Bestellvorgangs über mehrere unabhängig gelieferte Slices validieren.

Ein Diagramm, das die Mikro-Frontend-Testpyramide zeigt, mit isolierten Fragment-Tests, Vertrags-Tests, Shell-Integration und End-to-End-Reisen.

Steuerung der Veröffentlichungsfläche

Verwenden Sie versionierte Manifeste, damit der Shell die genaue Fragment-Artikel-ID erkennen kann, die sie lädt. Ein Manifest gibt Operatoren auch einen Ort, an dem sie eine bekannte gute Version festlegen können, wenn eine Remote-Veröffentlichung Fehler verursacht.

Nützliche Steuerelemente umfassen:

  • Feature-Flags: Aktivieren Sie ein neues Fragment für eine interne Zielgruppe oder eine ausgewählte Route, bevor es breiter bekannt wird.
  • Canary-Veröffentlichung: Richten Sie eine begrenzte Zielgruppe auf das neue Artefakt aus und überwachen Sie Browserfehler, Ausfallfehler und wichtige Geschäftsaktionen.
  • Beobachtbare Bundle: Fügen Sie Release-Identifikatoren zu Protokollen, Spuren und Client-Fehlern hinzu, damit die verantwortliche Gruppe den fehlenden Fragment identifizieren kann.
  • Rückgängigmachungspfade: Verwenden Sie die vorherige kompatible Artefakt verfügbar und machen Sie die Wiederherstellung zu einem operativen Vorgang, nicht zu einem manuellen Neubau.

Teams sollten die Shell und den Fragment zusammen in einer Produktionsumgebung testen. Ein erfolgreicher lokaler Lauf beweist nicht, dass ein Inhaltslieferweg, ein Cache, ein Authentifizierungstoken oder ein Remote-Manifest für die Benutzer korrekt verhalten wird. Automatisierung von Bereitstellungspraktiken können wiederholbare Promotion- und Rollback-Workflows unterstützen, aber die Architektur benötigt noch klare Eigentümerschaft.

Migrieren Sie eine Domäne nach der anderen

Eine strangulierte Migration führt eine Fähigkeit von der Monolith zu einem neuen Fragment, während der Rest unverändert bleibt. Eine Feature-Toggle kann parallel laufende Tests unterstützen, wodurch das Team den neuen Weg mit der bestehenden Implementierung vergleichen kann, bevor der neue Weg als Standard vorgesehen wird.

Überlegen Sie sich ein Einkaufsportal mit separaten Katalog-, Konto- und Checkout-Teams. Die Shell besitzt die Navigation und die Authentifizierung, das Katalogteam besitzt das Produktbrowsing, das Konto-Team besitzt die Profil-Einstellungen und das Checkout-Team besitzt die Warenkorb- und Zahlungsflüsse. Jedes Team veröffentlicht sein eigenes Artefakt, während Vertragsprüfungen die Routen- und Ereignisvereinbarungen schützen.

Beginnen Sie mit einer geringen Risikodomäne, veröffentlichen Sie sie hinter einem Flag und beobachten Sie sie durch echte Reise. Erweitern Sie sich nur, nachdem das Team das Slice deployen, diagnostizieren und zurückrollen kann, ohne dass die gesamte Organisation einen Release koordinieren muss.

Verwenden Sie Micro Frontends in Capacitor und Electron

A Capacitor oder Electron-Anwendung fügt eine weitere Schale um die Browser-Schale herum. Capacitor platziert Web-code in einem nativen mobilen WebView, während Electron Web-code in einem Desktop-Renderer-Prozess ausführt. In beiden Fällen kann die App eine lokale Schale laden, die ausgewählte Frontend-Artefakte bei Laufzeit abruft, anstatt jede Schnittstellenänderung im nativen Binärdatei einzubetten.

Dieses Arrangement schafft einen nützlichen Release-Split. Die native Fähigkeiten, Berechtigungen und Bridge-code bleiben mit der installierten Anwendung verbunden, während die web-eigene Oberfläche, wie z.B. Konto, Hilfe, Katalog oder Einstellungen, einem separaten Lieferweg folgen können. Die Schale muss jedoch entscheiden, wo Fragmente herkommen, welche Version genehmigt ist und was die Anwendung tun sollte, wenn ein Abruf oder eine Überprüfungsstufe fehlschlägt.

Live-Updates und Rollback

Ein Live-Update-System muss Frontend-Artefakte als veröffentlichtes Software behandeln. Es sollte signierte Paketeüberprüfen, bevor sie aktiviert werden, Release-Kanäle für gestaffelte Rollouts unterstützen, Updates auf der nächsten Startanforderung anwenden, anstatt eine aktive Sitzung zu unterbrechen, und automatische Rollback-Schutz mit atomarer Wiederherstellung bereitstellen.

Diese Kontrollen passen natürlich zur Mikro-Frontend-Lieferung. Ein mobiler oder Desktop-Shell kann eine Manifestdatei festlegen, ein kompatibles Fragment abrufen, seine Signatur überprüfen und es nur aktivieren, wenn das vollständige Paket verfügbar ist. Wenn die nächste Startanforderung einen Fehler feststellt, kann der Updater auf den vorher bekannten guten Zustand zurückkehren, anstatt den Benutzern einen teilweise aktualisierten Interface zu hinterlassen.

Capgo ist eine Option für dieses Liefermodell. Sein Live-Update-Plattform für CapacitorJS- und Electron-Anwendungen veröffentlicht signierte Web-Bundles, unterstützt zielgerichtete Kanäle, legt Updates auf die nächste Startphase an und bietet Protokolle, Versionsgeschichte, Akzeptanz- und Fehlermetriken, Rollback-Schutz, CI/CD-Integrationen und ein API. Teams, die sich für die native Brücke entscheiden sollten, sollten auch verstehen, wie Capacitor Web- und native code miteinander verbindet..

Ein Diagramm, das zeigt, wie man Microfrontends mit Capacitor oder Electron-App-Shell verwendet.

Was ändert sich in einer native Shell?

Der native Wrapper führt Einschränkungen ein, die eine Browser-Anwendung nicht kennt:

  • Verbindbarkeit: Ein Fragment kann unzugänglich sein, wenn das Gerät offline ist, daher benötigt der Shell konsolidierte Artefakte oder einen lokalen Ausfallschalter.
  • Kompatibilität: Ein Web-Bundle kann auf native Brückenverhalten angewiesen sein, das der installierte Binary nicht unterstützt.
  • Sicherheit: Remote code muss authentifiziert, intaktkontrolliert und für den Anwendungscontex autorisiert werden.
  • Wiederherstellung: Der Shell muss in der Lage sein, einen ungültigen Bundle abzulehnen und eine funktionierende Version ohne sofortige Verteilung im Store wiederherzustellen.
  • Session-Sicherheit: Bei der Aktualisierung während eines Zahlungs- oder Formularflusses kann sich ein inkonsistenter Zustand ergeben, daher ist die Aktivierung bei der nächsten Veröffentlichung sicherer als das Unterbrechen aktiver Arbeit.

Dieses Modell stärkt die Rückschaltung, wenn das Lieferplattform atomische Aktivierung und detaillierte Release-Metriken bietet. Es kompliziert die Architektur, wenn Teams annehmen, dass die Unabhängigkeit von Webanwendungen die Kompatibilitätsplanung für native Anwendungen eliminiert. Die native Shell bleibt eine Vertragsgrenze, und jeder Fragment muss sie respektieren.

Wann Micro Frontends wählen

Wählen Sie Micro Frontends, wenn eine unabhängige Bereitstellung eine echte Anforderung istmehrere Squads klar getrennte Produktflächen besitzen oder Legacy- und neue Interfaces während einer langen Migration koexistieren müssen. Die Technologievielfalt kann auch die Verwendung des Musters rechtfertigen, wenn Teams Rahmenbedingungen benötigen, die ein einzelnes Build nicht sauber umsetzen kann.

Vermeiden Sie es, wenn ein kleines Team eine Frontend-Einheit komfortabel besitzen kann, wenn Domänen umfangreiche, änderbare Zustände teilen oder wenn Ihre Organisation zuverlässige CI, Beobachtbarkeit, Vertragsprüfungen und Rückschaltprozeduren fehlt. Ein verteiltes Interface ohne diese Grundlagen schafft keine Autonomie. Es schafft nur mehrere Orte, an denen Fehler versteckt werden können.

Verwenden Sie einen einfachen Starttest:

  • Eigentümerschaft: Kann ein Team Entscheidungen für den vorgeschlagenen Abschnitt treffen?
  • Grenze: Kann die Hülle und die Scheibe über einen stabilen Vertrag kommunizieren?
  • Release-Bedarf: Benötigt das Team eine unabhängige Bereitstellung?
  • Betriebsbereitschaft: Kann man den Fragmenten überwachen, testen, festhalten und zurückrollen?
  • Wert für den Benutzer: Bessert die Aufteilung die Lieferung ohne Schaden für die Leistung oder Konsistenz?

Beginnen Sie mit einem geringen Risikobereich wie Hilfeinhalten oder Einstellungen. Definieren Sie den Vertrag zum Einhängen, die Routenbesitzer, Ereignisse, Design-Token, Fallback-Verhalten und Versionspolitik. Versenden Sie hinter einem Feature-Flag, messen Sie den hinzugefügten Bundle und die Beladungskosten und dokumentieren Sie jeden neuen Kanal, Manifest, Abhängigkeitsregel und Rückrollweg.

Micro-Frontends sind ein Werkzeug für organisatorische und Release-Unabhängigkeit, nicht eine automatische Verbesserung der Frontend-Qualität. Wenn das Releaseproblem klein ist, kann ein modulares Monolith das bessere Ergebnis sein. Wenn das Koordinationsproblem groß und persistente ist, kann eine sorgfältig regierte Micro-Frontend-Architektur den Teams die Autonomie geben, die sie benötigen.


Wenn Sie Micro-Frontends für ein Capacitor oder Electron-Produkt bewerten Capgo Kann Ihnen helfen, signierte Web-Bundles über kontrollierte Kanäle zu liefern, Updates auf dem nächsten Launch zu aktivieren und durch Rollback-Schutz wiederherzustellen. Besuchen Sie Capgo zur Überprüfung seiner Lieferung, Beobachtung und API-Optionen, bevor Sie Ihren Fragment-Release-Prozess entwerfen.

Lebendige Updates für Capacitor-Anwendungen

Wenn ein Web-Schicht-Bug live ist, schicken Sie den Fix über Capgo anstatt auf Tage für die Genehmigung im App-Store zu warten. Die Benutzer erhalten das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Unterstützung durch Martin

Jetzt loslegen

Neueste von unserem Blog

Capgo gibt Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle mobile App zu erstellen.