$30 off During Our Annual Pro Sale. View Details »

DevSession: Web UI Patterns & Practices

DevSession: Web UI Patterns & Practices

Jörg Neumann

September 28, 2022
Tweet

More Decks by Jörg Neumann

Other Decks in Programming

Transcript

  1. ACLUE GmbH | info@aclue.de Web UI Patterns & Practices Robin

    Muller | Jorg Neumann : :
  2. JÖRG NEUMANN ROBIN MÜLLER THEMEN  Frontend Technologies  Mobile

    Development  Machine Learning  Consulting, Coaching, Training KONTAKT  Mail: Joerg.Neumann@Aclue.de  Twitter: @JoergNeumann THEMEN  Machine Learning​  Frontend Technologies​  Java Fullstack​  Consulting, Training​ KONTAKT  Mail: Robin.Mueller@Aclue.de www.aclue.de
  3. https://tinyurl.com/5y5ym7bv DIE SAMPLES

  4. DIE DEMOS GITHUB REPOS  HTTPS://GITHUB.COM/ACLUE-DE/FRONTENDWORKSHOP  HTTPS://GITHUB.COM/ACLUE-DE/FRONTENDWORKSHOP_PATTERNLIBRARY  HTTPS://GITHUB.COM/ACLUE-DE/FRONTENDWORKSHOP_STORYBOOK

    CODEPEN COLLECTION  HTTPS://CODEPEN.IO/COLLECTION/BNRPLE
  5. MICRO FRONTENDS

  6. BACKEND FRONTEND

  7. FRONTEND SERVICE 1 SERVICE 2 SERVICE 3 SERVICE 4 MICROSERVICES

    BACKEND
  8. FRONTEND 1 FRONTEND 2 FRONTEND 3 FRONTEND 4 SERVICE 1

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

    SERVICE 2 SERVICE 3 SERVICE 4 MICROSERVICES MICRO FRONTENDS SELF-CONTAINED SYSTEM
  10. MICRO FRONTENDS

  11. PAGE COMPOSITION

  12. PAGE COMPOSITION TEAM HEADER TEAM DASHBOARD TEAM ADVERTISING

  13. PAGE COMPOSITION <body> <red-header> <blue-dashboard> <green-adbox></green-adbox> </blue-dashboard> </red-header> </body> Team

    Dashboard Team Header Team Advertising
  14. PAGE COMPOSITION

  15. DEMO

  16. MICRO FRONTEND COMPONENTS LAYOUT DEVOPS KOMMUNIKATION

  17. Quelle: https://arngren.net/ LAYOUT

  18. LAYOUT

  19. DEMO

  20. LAYOUT

  21. 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
  22. EIN LAYOUT FÜR ALLE DEVICES

  23. RESPONSIVE DESIGN PATTERNS  RESIZE  REFLOW  REPOSITION 

    REDESIGN
  24. RESIZE

  25. DEMO

  26. REFLOW

  27. DEMO

  28. REPOSITION

  29. DEMO

  30. REDESIGN

  31. CONTAINER QUERIES  Seit kurzem unter Chrome und Safari verfügbar

     Auch als Polyfill von Google Chrome Labs für alle gängigen Browser https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries
  32. DEMO

  33. MICRO FRONTEND COMPONENTS LAYOUT DEVOPS KOMMUNIKATION

  34. <html> <head> <script src="fancyFramework.js"></script> </head> <body> <div id="fancyWidget"></div> </body> </html>

     Keine Semantik  Intransparenz  Anpassungen schwierig  Framework-Abhängigkeit COMPONENTS
  35. <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
  36. 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
  37. DEMO

  38. MICRO FRONTEND LAYOUT COMPONENTS DEVOPS KOMMUNIKATION

  39. KOMMUNIKATION TEAM HEADER TEAM DASHBOARD TEAM ADVERTISING Kommunikation: • URL-Parameter

    • Web Components • Custom Dom Events • Broadcast Channel
  40. DEMO

  41. MICRO FRONTEND LAYOUT COMPONENTS DEVOPS KOMMUNIKATION

  42. 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
  43. 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
  44. DEMO

  45. 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
  46. BUNDLING https://webpack.js.org/

  47. 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/
  48. DEMO

  49. 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
  50. DEMO

  51. 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
  52. DEMO

  53. 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/
  54. DEMO

  55. 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)
  56. 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
  57. Q & A