En aquest tema, aprendrem com optimitzar el rendiment de les aplicacions Angular per assegurar-nos que siguin ràpides i eficients. Explorarem diverses tècniques i eines que ens ajudaran a millorar el temps de càrrega, la velocitat de resposta i l'experiència general de l'usuari.

Continguts

Introducció a l'optimització del rendiment

L'optimització del rendiment és crucial per garantir que les aplicacions Angular siguin ràpides i responsives. Alguns dels beneficis inclouen:

  • Millor experiència d'usuari.
  • Menor temps de càrrega.
  • Menor consum de recursos.
  • Millor posicionament en motors de cerca (SEO).

Lazy Loading de mòduls

El Lazy Loading permet carregar mòduls només quan són necessaris, reduint el temps de càrrega inicial de l'aplicació.

Exemple

// app-routing.module.ts
const routes: Routes = [
  {
    path: 'feature',
    loadChildren: () => import('./feature/feature.module').then(m => m.FeatureModule)
  }
];

Explicació

  • loadChildren: Aquesta propietat indica que el mòdul FeatureModule es carregarà només quan l'usuari accedeixi a la ruta /feature.

Change Detection Strategy

Angular utilitza el mecanisme de Change Detection per actualitzar la vista quan el model canvia. Podem optimitzar aquest procés utilitzant estratègies de Change Detection.

Estratègies

  • Default: Angular verifica tots els components.
  • OnPush: Angular verifica només els components amb inputs canviats o esdeveniments.

OnPush Change Detection

L'estratègia OnPush pot millorar significativament el rendiment en aplicacions grans.

Exemple

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent {
  @Input() data: any;
}

Explicació

  • ChangeDetectionStrategy.OnPush: Angular només verificarà aquest component si els inputs canvien o es produeix un esdeveniment.

AOT Compilation

L'AOT (Ahead-of-Time) Compilation compila l'aplicació durant el build, millorant el temps de càrrega i la seguretat.

Com habilitar AOT

ng build --prod

Explicació

  • --prod: Aquest flag habilita l'AOT Compilation i altres optimitzacions per a la producció.

Optimització de les dependències

Reduir la mida del bundle eliminant dependències innecessàries i utilitzant imports específics.

Exemple

// Evitar
import * as _ from 'lodash';

// Utilitzar
import { debounce } from 'lodash';

Explicació

  • Importar només les funcions necessàries redueix la mida del bundle.

Utilització de Web Workers

Els Web Workers permeten executar tasques en segon pla, millorant la resposta de la UI.

Exemple

// app.component.ts
if (typeof Worker !== 'undefined') {
  const worker = new Worker('./app.worker', { type: 'module' });
  worker.onmessage = ({ data }) => {
    console.log(`Page got message: ${data}`);
  };
  worker.postMessage('hello');
}

Explicació

  • Els Web Workers permeten executar codi en un fil separat, evitant bloquejar la UI.

Optimització de les imatges

Les imatges poden ser una de les parts més pesades d'una aplicació. Optimitzar-les pot reduir significativament el temps de càrrega.

Consells

  • Utilitzar formats d'imatge moderns com WebP.
  • Comprimir les imatges.
  • Utilitzar imatges responsives.

Exercicis pràctics

  1. Lazy Loading: Implementa Lazy Loading en una aplicació Angular existent.
  2. OnPush Change Detection: Canvia l'estratègia de Change Detection d'un component a OnPush i observa els canvis en el rendiment.
  3. AOT Compilation: Compila una aplicació Angular utilitzant AOT i mesura el temps de càrrega.

Conclusió

L'optimització del rendiment és essencial per a qualsevol aplicació Angular. Mitjançant tècniques com el Lazy Loading, l'estratègia OnPush, l'AOT Compilation i l'optimització de les dependències i imatges, podem assegurar-nos que les nostres aplicacions siguin ràpides i eficients. Practica aquestes tècniques per millorar el rendiment de les teves aplicacions Angular.

Curs d'Angular 2+

Mòdul 1: Introducció a Angular

Mòdul 2: Conceptes bàsics de TypeScript

Mòdul 3: Components i plantilles

Mòdul 4: Directives i pipes

Mòdul 5: Serveis i injecció de dependències

Mòdul 6: Enrutament i navegació

Mòdul 7: Formularis en Angular

Mòdul 8: Client HTTP i observables

Mòdul 9: Gestió d'estat

Mòdul 10: Proves en Angular

Mòdul 11: Temes avançats

Mòdul 12: Desplegament i millors pràctiques

© Copyright 2024. Tots els drets reservats