Aller au contenu

Lazy loader vos pages

En mettant en place le Lazy Loading, le compilateur d’Angular segmente les différentes routes de votre application en plusieurs modules JS (chunks). Ces modules ne sont chargés par le navigateur que lorsqu’ils sont requis, ce qui est typiquement le cas lorsqu’un utilisateur accède à une page spécifique.

Ainsi, le navigateur ne charge que le module JS associé à cette page pour de meilleures performances !

// app.routing.ts
export const routes: Routes = [
  {
    path: '',
    redirectTo: 'products',
    pathMatch: 'full',
  },
  {
    path: 'products',
    // 👇 loadComponent lazy load un composant standalone
    loadComponent: () => import('./routes/products/products.route'),
  },
  {
    path: 'my-account',
    // 👇 loadChildren lazy load une route qui possède qui possède des sous routes
    loadChildren: () => import('./routes/my-account/my-account.routing'),
  },
];
// my-account.routing.ts
export default [
  {
    path: '',
    component: MyAccountRoute,
    children: [
      {
        path: '',
        loadComponent: () => import('./my-profile/my-profile.route'),
      },
      {
        path: 'purchases',
        loadComponent: () => import('./purchases/purchases.route'),
      },
    ]
  },

] as Routes;

Dans cette exemple, je lazy load un Standalone Component grâce à loadComponent en pointant directement vers ce composant. Je lazy load également my-account qui possède des sous routes grâce à loadChildren en pointant vers son tableau de routes contenant les sous routes (qui sont lazy load également !).

De plus, en faisant un export default sur le composant ou tableau de routes, nous n’avons même pas besoin d’écrire .then(m => m.myComponent) !