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

Angular, Lazy Loading, ngVikings in Copenhagen, Feb 2017

Angular, Lazy Loading, ngVikings in Copenhagen, Feb 2017

Manfred Steyer

February 11, 2017
Tweet

More Decks by Manfred Steyer

Other Decks in Programming

Transcript

  1. About me … • Manfred Steyer • SOFTWAREarchitekt.at • Trainer

    & Consultant • Focus: Angular • Google Developer Expert (GDE) Page  2 Manfred Steyer
  2. Contents • Lazy Loading • Preloading • Prevent Lazy Loading

    • Shared Modules and Lazy Loading Page  3
  3. Module Structure Page  5 AppModule … … … SharedModule

    Root Module Feature Modules Shared Module
  4. Lazy Loading Page  6 AppModule … … … SharedModule

    Root Module Feature Modules Shared Module
  5. Root Module with Lazy Loading Page  7 const APP_ROUTE_CONFIG:

    Routes = [ { path: 'home', component: HomeComponent }, { path: 'flights', loadChildren: './[…]flight-booking.module#FlightBookingModule' } ];
  6. Routes for Feature Module Page  8 const FLIGHT_ROUTES =

    [ { path: '/bookings', component: FlightBookingComponent, […] }, […] } Url: /flights/bookings Triggers Lazy Loading
  7. Idea • Modules that might be needed later are loaded

    after (!) the start of the application • When the module is actually needed, it is available immediately Page  12
  8. Lazy Loading and Shared Modules Page  24 AppModule FlightModule

    SharedModule includes includes (lazy) includes AuthService
  9. Lazy Loading and Shared Modules Page  25 AppModule FlightModule

    SharedModule includes includes (lazy) includes AuthService AuthService
  10. Lazy Loading and Shared Modules Page  26 AppModule FlightModule

    SharedModule includes includes (lazy) includes AuthService AuthService
  11. Solution Page  27 AppModule FlightModule SharedModule includes (lazy) includes

    CoreModule includes includes Only import CoreModule into AppModule! Global Providers like AuthService & Shell
  12. Solution (for Libraries) Page  31 AppModule FlightModule AuthModule includes

    (lazy) includes (with Services) CoreModule includes includes (without Services)
  13. Auth Module Page  33 @NgModule({ […], providers: [] })

    export class AuthModule { static forRoot(): ModuleWithProviders { return { ngModule: AuthModule, providers: [AuthService, […]] } } }
  14. Summary Page  35 Lazy Loading of Modules webpack splits

    chunks Prevent Lazy Loading with Guards Preloading Strategy Use Core Module for global Services Shared Modules w/ and w/o Providers