【问题标题】:Angular 8 Lazy Loading. Questions regarding: imports, entryComponents and providersAngular 8 延迟加载。有关以下问题的问题:导入、入口组件和提供程序
【发布时间】:2023-03-30 14:55:01
【问题描述】:

我刚刚超过了 2MB 标记,所以我决定实施延迟加载来处理我的大量批次。因此,我对导入、entryComponents 和提供程序有疑问。将它们全部归结为一个问题:

我将什么导入 app-routing.module.ts 以及将什么导入 login-routing.module.ts

自从我使用:

  • 角度模块
  • 角材料模块(垫对话框,因此是入口组件)
  • 服务众多(所有组件中仅调用部分服务)
  • 其他 npms

这是我的 app-routing.module.ts:

const routes: Routes = [
  {
    path: '',
    component: AppComponent,
    children: [
      {
        path: '',
        pathMatch: 'full',
        redirectTo: '/login'
      },
      {
        path: '**',
        component: LoginComponent
      },
      {
        path: 'login',
        loadChildren: () => import('./account/login/login.module').then(m => m.LoginModule)
      }
    ]
  }
@NgModule({
  imports: [RouterModule.forRoot(routes, {useHash: true})],
  exports: [RouterModule]
})
export class AppRoutingModule { }

这是我的 login-routing.module.ts:

const routes: Routes = [
  {
    path: '',
    component: LoginComponent
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class LoginRoutingModule { }

【问题讨论】:

    标签: angular lazy-loading angular8 angular2-providers


    【解决方案1】:

    这是取决于您的用例的事情之一。为了减少捆绑包的大小,理想情况下,您将模块树中的所有内容尽可能地向下推。所以你的 App.Module 里面只有很少的东西,你的大部分导入/声明/提供者/入口组件都在你的功能模块中。这包括除非您需要,否则不要在根目录中注入您的服务,而是将它们设置在功能模块提供程序数组中。

    但需要考虑一些权衡。例如,理想情况下,您可以将 Angular 材质模块导入到功能模块中,但是如果您将拥有很多功能模块,则必须进入模块并添加导入会有点烦人您在功能模块中需要的每个材料模块。另一方面,对于您的登录模块,您可能只需要几个材料模块,而您的整个应用程序可能需要一堆。

    总而言之,如果您的包大小是您的主要关注点,请将所有内容尽可能深入到您的模块树中。请注意,您在简化开发方面受到了轻微影响。

    因此,对于您提到的内容(Angular 模块、Angular Material 模块、服务、其他 NPM),您希望将它们尽可能地推到模块树中。请记住,对于单例服务,您将希望它们在您的 app.module 中,因此它们仍然是单例服务。如果您将它们移动到功能模块中的 providers 数组中,那么它们都将获得自己的实例。另一个值得注意的例子是 HttpClientModule,您只想在根目录中导入一次。

    【讨论】:

    • 一个完美的答案,正是我想知道的,因为我对提供者以及他们是否会有多个实例有疑问。
    猜你喜欢
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多