Ленивая загрузка — это техника в Angular, при которой модули загружаются только тогда, когда они действительно нужны (обычно при переходе по соответствующему маршруту), а не во время первоначальной загрузки приложения.
const routes: Routes = [
{
path: 'products',
loadChildren: () => import('./products/products.module').then(m => m.ProductsModule)
},
{
path: 'admin',
loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule)
}
];
Пример модуля продуктов (products.module.ts
):
@NgModule({
imports: [
CommonModule,
RouterModule.forChild([ // Обратите внимание на forChild
{ path: '', component: ProductListComponent },
{ path: ':id', component: ProductDetailComponent }
])
],
declarations: [ProductListComponent, ProductDetailComponent]
})
export class ProductsModule { }
В DevTools Chrome:
В Angular CLI:
ng build
) создаются отдельные файлы для ленивых модулейПроизводительность:
Эффективность:
Масштабируемость:
Синглтоны:
providedIn: 'root'
Повторная загрузка:
RouteReuseStrategy
)Preloading:
@NgModule({
imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })],
exports: [RouterModule]
})
export class AppRoutingModule { }
Группировка модулей:
Custom Preloading Strategy:
Анализ bundle:
source-map-explorer
для оптимизации{
path: 'admin',
loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule),
canLoad: [AuthGuard] // Защита от загрузки модуля
}
loadChildren
и динамические импортыПравильное использование ленивой загрузки — признак хорошо оптимизированного Angular-приложения.