在 Angular 中,可以使用动态导入方式来延迟加载某些模块或组件。动态导入可提高初始页面加载速度,并减少不必要的网络请求。下面是一个使用动态导入的示例:
import { Component, NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: 'my-route',
loadChildren: () =>
import('./my-module/my-module.module').then((m) => m.MyModule),
},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
在上述示例中,my-module
模块将会被动态导入。它在这里被称为 MyModule
,并在 loadChildren
属性中声明。当用户访问 'my-route' 路由时,Angular 会通过 loadChildren
延迟运行 MyModule
。
需要注意的是,在使用动态导入时,需要将 TypeScript 的 target
编译选项设置为 es2015
或更高的版本。这是因为在较早的编译目标版本上,JavaScript 不支持动态导入的语法。
此外,Angular 还提供了 resolveAsyncRoutes
配置选项,用于优化动态导入性能。你可以在 AppModule
中使用它,像这样:
@NgModule({
imports: [
RouterModule.forRoot(routes, {
preloadingStrategy: PreloadAllModules,
// Optimizes loading performance with preloading
resolveAsyncRoutes: PreloadAllModules,
}),
],
// ...
})
export class AppModule {}