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

High-Performance Applications with Angular, GDG Dev Fest in Munich

High-Performance Applications with Angular, GDG Dev Fest in Munich

Talk vom GDG Dev Fest in Munich, November 2017

Manfred Steyer

November 26, 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 ▪ 3 Manfred Steyer
  2. Contents • Lazy Loading and Preloading • Performance for Data

    Binding with OnPush • AOT and Tree Shaking
  3. Module Structure Page ▪ 9 AppModule … … … SharedModule

    Root Module Feature Modules Shared Module
  4. Lazy Loading Page ▪ 10 AppModule … … … SharedModule

    Root Module Feature Modules Shared Module
  5. Root Module with Lazy Loading Page ▪ 11 const APP_ROUTE_CONFIG:

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

    [ { path: '', component: FlightBookingComponent, […] }, […] }
  7. Lazy Loading • Lazy Loading means: Loading it later •

    Better startup performance • Delay during execution for loading on demand
  8. Idea • Module that might be needed later are loaded

    after the application started • When module is needed it is available immediately Page ▪ 17
  9. Activate Preloading Page ▪ 18 … imports: [ […] RouterModule.forRoot(

    ROUTE_CONFIG, { preloadingStrategy: PreloadAllModules }); ] …
  10. OnPush flights flight flight {{ flight.id }} {{ flight.id }}

    FlightSearch Card Card Angular just checks when “notified”
  11. "Notify" about change? • Change bound data (@Input) • OnPush:

    Angular just compares the object reference! • e. g. oldFlight === newFlight • Raise Event within the component • Notify a bound observable • Trigger it manually • Don't do this at home ;-) • At least: Try to avoid this
  12. Change Inputs flights flight flight {{ flight.id }} {{ flight.id

    }} FlightSearch Card Card flightold === flightnew
  13. Advantages of AOT • Better Startup-Performance • Smaller Bundles: You

    don't need to include the compiler! • Tools can easier analyse the code • Remove not needed parts of frameworks • Tree Shaking • Huge improvements w/ Angular 5 and CLI 1.5 b/c of Build Optimizer
  14. More about this in my Medium Account • Configuration Details,

    Samples etc. • https://medium.com/@ManfredSteyer/angular-performance-tuning- article-series-6e3c33707b25