Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Micro Frontends: Große Web Apps modular entwickeln

Micro Frontends: Große Web Apps modular entwickeln

Jörg Neumann

July 08, 2022
Tweet

More Decks by Jörg Neumann

Other Decks in Programming

Transcript

  1. JÖRG NEUMANN ROBIN MÜLLER THEMEN  Frontend Technologies  Mobile

    Development  Machine Learning  Consulting, Coaching, Training KONTAKT  Mail: [email protected]  Twitter: @JoergNeumann THEMEN  Machine Learning​  Frontend Technologies​  Java Fullstack​  Consulting, Training​ KONTAKT  Mail: [email protected] www.aclue.de
  2. FRONTEND 1 FRONTEND 2 FRONTEND 3 FRONTEND 4 SERVICE 1

    SERVICE 2 SERVICE 3 SERVICE 4 MICROSERVICES MICRO FRONTENDS
  3. FRONTEND 1 FRONTEND 2 FRONTEND 3 FRONTEND 4 SERVICE 1

    SERVICE 2 SERVICE 3 SERVICE 4 MICROSERVICES MICRO FRONTENDS SELF-CONTAINED SYSTEM
  4. WAS WANN BENUTZEN? GRID LAYOUT  Komposition von Containern 

    Gesamtlayout einer Webseite  Explizite Anordnung von Bereichen FLEX LAYOUT  Komposition von Inhalten  Positionierung von Container- Elementen  Implizite Anordnung für variable Inhalte
  5. CONTAINER QUERIES  Tech Preview Feature in Chrome, Opera und

    Safari  Für Chrome: "Enable CSS Container Queries" Feature Flag unter chrome://flags https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries
  6. <html> <head> <script src="fancyFramework.js"></script> </head> <body> <div id="fancyWidget"></div> </body> </html>

     Keine Semantik  Intransparenz  Anpassungen schwierig  Framework-Abhängigkeit COMPONENTS
  7. <html> <head> <script type="module" src="NumberPad.js"></script> </head> <body> <number-pad value="1" minimum="1"

    maximum="1"> </number-pad> </body> </html>  Semantik  Local Scoping  Konfiguration  Bundle Import
  8. CUSTOM ELEMENTS Eine API zur Registrierung von eigenen HTML Elementen

    HTML TEMPLATES UI-Vorlage für eine Komponente SHADOW DOM Kapselung der inneren DOM- Bestandteile eines Elements ES MODULES Einbinden von Komponenten WEB COMPONENTS
  9. KOMMUNIKATION TEAM HEADER TEAM DASHBOARD TEAM ADVERTISING Kommunikation: • URL-Parameter

    • Web Components • Custom Dom Events • Broadcast Channel
  10. Shared Styling (Colors, Fonts, ….) Micro Frontend 1 Micro Service

    1 Micro Frontend 2 Micro Service 2 Micro Frontend 3 Micro Service 3 Shared Components (Buttons, Slider, ….) Pattern Library App Shared UI Package Shared UI Package Shared UI Package DEVOPS
  11. WAS WIRD BENÖTIGT? ZENTRALES REPOSITORY  Wiederverwendbare Elemente (Komponenten, Styles,

    Assets, …)  Wer entwickelt neue Elemente?  Wie ist der Prozess? VERFÜGBARKEIT  Bundling als Package  Versionierung  Releases DOKUMENTATION  Testing  Abnahme durch UI/UX  Guidelines für Entwickler
  12. BUNDLING  In ein einzelnes JS-File bundeln  Als ECMAScript

    Module  Einbinden per Script-Tag  Wird zur Laufzeit der App hinzugefügt  In mehreren Files bundeln  Als NPM Package publishen  Einbinden als versioniertes Package  Wird beim Kompilieren der App hinzugefügt  Erlaubt Tree-shaking
  13. WEBPACK  Meistgenutzter Bundler im Einsatz bei Create React App,

    Angular CLI und weiteren Frameworks  Wenig out-of-the-box - dafür weitreichenden Support durch Plugins (macht die Config sehr komplex)  Sehr langer Buildprozess https://webpack.js.org/
  14. ESBUILD  10x-100x schneller als andere Buildtools wie Webpack, Parcel

    oder Rollup*  Nativer Support für ES6, TypeScript, JSX und mehr  Noch sehr neu (Stand April 2022 in v0.14), gewinnt aber immer mehr Aufmerksamkeit https://esbuild.github.io/ * https://esbuild.github.io/faq/#why-is-esbuild-fast
  15. PATTERN LIBRARY VERFÜGBAR MACHEN NPM  Öffentliche Packages sind kostenlos,

    private Packages aber kostenpflichtig  Über npmjs.com gehosted NEXUS REPOSITORY  Kostenpflichtige Lösung von Sonatype  Self-Hosted, nur für organisationsinterne Packages geeignet GITHUB PACKAGES  Öffentliche und private* Packages sind kostenlos (*mit Storage-Grenze)  Über github.com gehosted
  16. DOKUMENTATION  Open Source Tool für alle gängigen Frameworks 

    Interaktive Stories für isolierter UI Komponenten  Hilfreich für  Entwickeln  Testen  Dokumentieren https://storybook.js.org/
  17. FAZIT PATTERN LIBRARIES SPAREN WIEDERHOLTEN IMPLEMENTIERUNGSAUFWAND  Einheitliche Implementierung eines

    Style Guides  Erleichtert die Zusammenarbeit zwischen Designern und Entwicklern, sowie zwischen Entwicklungsteams  Zentraler Ablageort für gemeinsam UI-Fragmente (Komponenten, Styles, Assets, …)  Erleichtere die Nutzung von Elementen durch ein Dokumentationstool (z.B. Storybook)
  18. FAZIT  Micro Frontends fördern die Skalierung von Projekten durch

    vertikale Aufteilung  NPM Module helfen beim Paketieren und Verteilen der Assets  Flex und Grid helfen bei der Umsetzung eines Responsive Layouts  Mit Web Components können die Bereiche der App gekapselt und wiederverwendet werden  Mit Pattern Libraries können wiederverwendbare Elemente teamübergreifend verfügbar gemacht werden  Storybook hilft zur Dokumentation einer Pattern Library