The Microfrontend Revolution Module Federation with Angular @ngGraz 10/2020

The Microfrontend Revolution Module Federation with Angular @ngGraz 10/2020

15934fa2aa7b2ce21f091e9b7cffa856?s=128

Manfred Steyer

October 15, 2020
Tweet

Transcript

  1. @ManfredSteyer ManfredSteyer The Microfrontend Revolution Module Federation with Angular Manfred

    Steyer, ANGULARarchitects.io
  2. @ManfredSteyer Contents #1: Module Federation #2 Federated Angular #3: Version

    Mismatch
  3. @ManfredSteyer Manfred Steyer

  4. @ManfredSteyer

  5. @ManfredSteyer

  6. @ManfredSteyer Idea const Component = await import('http://other-app/xyz') Does not work

    with webpack/ Angular CLI Even lazy parts must be known at compile time!
  7. @ManfredSteyer Webpack 5 Module Federation Shell (Host) Microfrontend (Remote) //

    Maps Urls in // webpack config remotes: { mfe1: "mfe1" } // Expose files in // webpack config exposes: { './Cmp': './my.cmp.ts' } import('mfe1/Cmp')
  8. @ManfredSteyer How to Get the Microfrontend's URL? Shell (Host) Microfrontend

    (Remote) RemoteEntry.js <script src="…"></script>
  9. @ManfredSteyer How to Share Libs? Shell (Host) Microfrontend (Remote) shared:

    [ "@angular/core", "…" ] shared: [ "@angular/core", "…" ]
  10. @ManfredSteyer

  11. @ManfredSteyer ?

  12. @ManfredSteyer Custom Builder

  13. @ManfredSteyer

  14. @ManfredSteyer 1) ng add @angular-architects/module-federation 2) Adjust generated configuration 3)

    ng serve
  15. @ManfredSteyer

  16. @ManfredSteyer

  17. @ManfredSteyer Dealing with Version Mismatch SemVer by Default: Highest compatiable

    version Fallback: Use own version Relaxing: Configure a range of accepted versions Singleton: Warning or error
  18. @ManfredSteyer Example for SemVer and Fallback • Shell: my-lib: ^10.0.0

    • MFE1: my-lib: ^10.1.1 • MFE2: my-lib: ^9.0.0 Result: • Shell and MFE1 share ^10.1.1 • MFE2 falls back to its own version ^9.0.0
  19. @ManfredSteyer Configuring Singletons shared: { "my-lib": { singleton: true, strictVersion:

    true // Error instead of warning! } }
  20. @ManfredSteyer Relaxing Version Requirements shared: { "my-lib": { requiredVersion: ">=1.0.1

    <11.1.1" } }
  21. @ManfredSteyer Free eBook ANGULARarchitects.io/book Updated for Module Federation and Alternatives

  22. @ManfredSteyer When can we have it? Webpack 5 and Module

    Federation: final Angular CLI must support webpack 5 too Angular CLI 11 (Beta) allows to opt into webpack 5 Angular CLI 11 ? (fall 2020)
  23. @ManfredSteyer Conclusion Module Federation Loading Separately Deployed Code Federated Angular

    Version Mismatch
  24. @ManfredSteyer d Slides & Examples Remote Company Workshops and Consulting

    http://angulararchitects.io