La càrrega mandrosa (lazy loading) és una tècnica d'optimització que permet carregar mòduls només quan són necessaris, en lloc de carregar-los tots al començament. Això pot millorar significativament el rendiment de l'aplicació, especialment en aplicacions grans amb molts mòduls.
Conceptes Clau
- Càrrega mandrosa: Carregar mòduls només quan es necessiten.
- Rutes: Definir rutes per als mòduls que es carregaran mandrosament.
- Mòduls: Dividir l'aplicació en mòduls més petits i independents.
Avantatges de la Càrrega Mandrosa
- Millora del Rendiment: Redueix el temps de càrrega inicial de l'aplicació.
- Optimització de Recursos: Només es carreguen els recursos necessaris en el moment adequat.
- Escalabilitat: Facilita la gestió i manteniment de l'aplicació dividint-la en mòduls més petits.
Configuració de la Càrrega Mandrosa
Pas 1: Crear un Mòdul
Primer, crearem un mòdul que volem carregar mandrosament. Suposem que tenim un mòdul anomenat AdminModule.
Aquest comandament crea un mòdul AdminModule i configura la ruta per carregar-lo mandrosament.
Pas 2: Configurar les Rutes
En el fitxer app-routing.module.ts, veurem una configuració similar a aquesta:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: 'admin',
loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule)
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }Pas 3: Definir les Rutes del Mòdul
En el fitxer admin-routing.module.ts, definirem les rutes específiques per al mòdul AdminModule.
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AdminComponent } from './admin.component';
const routes: Routes = [
{ path: '', component: AdminComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AdminRoutingModule { }Pas 4: Crear el Component
Crearem un component per al mòdul AdminModule.
Pas 5: Importar el Mòdul de Rutes
En el fitxer admin.module.ts, importarem el mòdul de rutes.
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AdminRoutingModule } from './admin-routing.module';
import { AdminComponent } from './admin.component';
@NgModule({
declarations: [AdminComponent],
imports: [
CommonModule,
AdminRoutingModule
]
})
export class AdminModule { }Exemple Complet
app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: 'admin',
loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule)
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }admin-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AdminComponent } from './admin.component';
const routes: Routes = [
{ path: '', component: AdminComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AdminRoutingModule { }admin.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AdminRoutingModule } from './admin-routing.module';
import { AdminComponent } from './admin.component';
@NgModule({
declarations: [AdminComponent],
imports: [
CommonModule,
AdminRoutingModule
]
})
export class AdminModule { }admin.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-admin',
template: `<h1>Admin Works!</h1>`,
styles: []
})
export class AdminComponent { }Exercici Pràctic
- Crea un nou mòdul anomenat
UserModuleque es carregui mandrosament. - Defineix una ruta per al mòdul
UserModule. - Crea un component dins del
UserModuleanomenatUserComponent. - Configura les rutes per al
UserModuleper mostrar elUserComponent.
Solució
Comandaments per crear el mòdul i el component
user-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { UserComponent } from './user.component';
const routes: Routes = [
{ path: '', component: UserComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class UserRoutingModule { }user.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { UserRoutingModule } from './user-routing.module';
import { UserComponent } from './user.component';
@NgModule({
declarations: [UserComponent],
imports: [
CommonModule,
UserRoutingModule
]
})
export class UserModule { }user.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-user',
template: `<h1>User Works!</h1>`,
styles: []
})
export class UserComponent { }Conclusió
La càrrega mandrosa de mòduls és una tècnica poderosa per optimitzar el rendiment de les aplicacions Angular. Dividint l'aplicació en mòduls més petits i carregant-los només quan són necessaris, podem reduir el temps de càrrega inicial i millorar l'experiència de l'usuari. Amb la pràctica, aquesta tècnica esdevé una part essencial del desenvolupament d'aplicacions Angular escalables i eficients.
Curs d'Angular
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- Arquitectura d'Angular
- Primera aplicació Angular
Mòdul 2: Components d'Angular
- Comprendre els components
- Crear components
- Plantilles de components
- Estils de components
- Interacció de components
Mòdul 3: Enllaç de dades i directives
- Interpolació i enllaç de propietats
- Enllaç d'esdeveniments
- Enllaç de dades bidireccional
- Directives integrades
- Directives personalitzades
Mòdul 4: Serveis i injecció de dependències
Mòdul 5: Enrutament i navegació
Mòdul 6: Formularis a Angular
Mòdul 7: Client HTTP i observables
- Introducció al client HTTP
- Fer sol·licituds HTTP
- Gestionar respostes HTTP
- Utilitzar observables
- Gestió d'errors
Mòdul 8: Gestió d'estat
- Introducció a la gestió d'estat
- Utilitzar serveis per a la gestió d'estat
- NgRx Store
- NgRx Effects
- NgRx Entity
Mòdul 9: Proves a Angular
- Proves unitàries
- Proves de components
- Proves de serveis
- Proves de cap a cap
- Simulació de dependències
Mòdul 10: Conceptes avançats d'Angular
- Angular Universal
- Optimització del rendiment
- Internacionalització (i18n)
- Tubs personalitzats
- Animacions d'Angular
