Architektur für Enterprise-Frontend-Anwendungen
(medium.com)-
Ein wachsender Codebestand bedeutet: Er wird schwerer zu verstehen und zu ändern.
-
Die Lösung? Den Codebestand klein halten.
-
Aufteilung des Codebestands nach Domänen & Micro Frontends zur Rettung!
-
Anforderungen wie das Festlegen von Abhängigkeitsbeziehungen zwischen Bibliotheken innerhalb eines Monorepos & das Prüfen von Abhängigkeiten wurden durch die Einführung von Nx gelöst.
-
Aufteilung des Codes in Anwendungen und Bibliotheken
-
Anwendungen übernehmen die Rolle der Injektion von Abhängigkeiten und Konfigurationen
-
Der Großteil der Funktionalität wird in Bibliotheken implementiert
- In Bibliotheken werden nicht nur allgemein nutzbare Elemente wie Design-System, Internationalisierung und Third-Party-Module geschrieben, sondern auch nicht wiederverwendeter Code wie das Hero-Banner der Startseite, die Produktdetailseite oder die Bestellhistorie.
Feature-Bibliotheken
-
Grundsätzlich werden alle Komponenten, die auf einer Seite verwendet werden, in einer Feature-Bibliothek mit demselben Namen geschrieben.
- z. B. werden für die Seite
SignInPageder Domäneaccountalle Komponenten in der Bibliothekaccount/feature-sign-ingeschrieben.
- z. B. werden für die Seite
-
Komponenten, die auf zwei oder mehr Seiten derselben Domäne gemeinsam genutzt werden, werden als separates Feature innerhalb dieser Domäne ausgelagert.
- z. B. wenn die Komponente
KakaoLoginButtonsowohl aufSignInPageals auch aufSignUpPageder Domäneaccountgemeinsam verwendet wird, wird diese Komponente in der Bibliothekaccount/feature-social-logingeschrieben.
- z. B. wenn die Komponente
-
Komponenten, die auf Seiten unterschiedlicher Domänen gemeinsam genutzt werden, werden als separates Feature innerhalb einer gemeinsamen Domäne ausgelagert.
- z. B. wird die gemeinsam genutzte Komponente
GlobalNavigation, die aufHomePageder Domänelandingund aufLecturePageder Domäneclassroomverwendet wird, in der Bibliothekshared/feature-navigationgeschrieben.
- z. B. wird die gemeinsam genutzte Komponente
Shell-Bibliotheken
-
Seiten werden erstellt, indem Komponenten aus Feature- und UI-Bibliotheken kombiniert werden.
- z. B. ist die Komponente
SignInPageeine Komponente der Bibliothekaccount/shell-kr-web. Dort befinden sich auchSignUpPage,PhoneVerificationPageusw.
- z. B. ist die Komponente
-
Shell-Bibliotheken sind der Einstiegspunkt einer bestimmten Domäne, der einer Anwendung bereitgestellt wird.
-
Es können je nach Anwendung unterschiedliche Einstiegspunkte bereitgestellt werden.
-
Zum Beispiel …
-
Die im
HomePage-Komponent verwendeten Komponenten sind in der Bibliotheklanding/feature-homegeschrieben. -
Aber selbst bei derselben
HomePageist die Zusammensetzung unterschiedlich, je nachdem, ob es sich um dieHomePageder US-Website, der japanischen Website oder der koreanischen Website handelt. -
Daher können für jede Anwendung, die auf die Domäne
landingzugreift, eigeneshell-Bibliotheken erstellt werden. (shell-us-web,shell-jp-web,shell-kr-web)
-
Provider-Bibliotheken
-
Bibliotheken, die den Zustand verwalten, der von zwei oder mehr Feature-Bibliotheken gemeinsam genutzt wird
- z. B.
shared/provider-auth-statezur Verwaltung des Login-Status
- z. B.
UI-Bibliotheken
- Eine Sammlung von Presentational-Komponenten, die von zwei oder mehr Bibliotheken gemeinsam genutzt werden.
Utility-Bibliotheken
-
Alle Module, die nicht zu den vier oben genannten Kategorien gehören
-
Sie sollten Funktionen bereitstellen, die unabhängig genug sind, um ohne Bezug zum Domänenmodell von Class101 getestet und bereitgestellt werden zu können.
- z. B.
shared/utils-apollo-client,shared/utils-i18n
- z. B.
Anwendungen
- Sie übernehmen nur die Rolle der Konfigurations- und Abhängigkeitsverwaltung = der Anwendungscode ist fast nicht vorhanden
Noch keine Kommentare.