Kurs Angular · Moduł 3: Moduły
Lazy Loading - Oddziały na Żądanie
W tej lekcji3
Lazy loading to technika ładowania modułów dopiero gdy są potrzebne - jak wysyłanie oddziałów dopiero gdy zajdzie potrzeba.
Konfiguracja Lazy Loading
// app-routing.module.ts
const routes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{ path: 'home', component: HomeComponent },
// Lazy loaded modules
{
path: 'samurai',
loadChildren: () => import('./features/samurai/samurai.module')
.then(m => m.SamuraiModule)
},
{
path: 'dojo',
loadChildren: () => import('./features/dojo/dojo.module')
.then(m => m.DojoModule)
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }Routing w Feature Module
// features/samurai/samurai-routing.module.ts
const routes: Routes = [
{ path: '', component: SamuraiListComponent },
{ path: ':id', component: SamuraiDetailComponent },
{ path: ':id/edit', component: SamuraiFormComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)], // forChild, nie forRoot!
exports: [RouterModule]
})
export class SamuraiRoutingModule { }Korzyści Lazy Loading
| Aspekt | Bez Lazy Loading | Z Lazy Loading |
|---|---|---|
| Initial Bundle | Cała aplikacja | Tylko core + home |
| Czas ładowania | Długi | Krótki |
| Pamięć | Wszystko od razu | Na żądanie |
| UX | Długie czekanie | Szybki start |
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Która składnia jest poprawna dla lazy loading modułu?
2. Jaką główną korzyść daje lazy loading modułów?
To 2 z 4 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Edytor kodu
Uzupełnij konfigurację routingu dla lazy loading modułu SamuraiModule.
- Układanie w poziomie
Ułóż początek lazy loading w jednej linii (do dynamicznego import):
- Układanie w pionie
Uporządkuj etapy lazy loadingu modułu po wejściu użytkownika na ścieżkę:
- Klikanie w kolejności
Kliknij elementy w kolejności, aby zbudować wywołanie: RouterModule.forChild(