【问题标题】:Importing module to use partially in other modules导入模块以在其他模块中部分使用
【发布时间】:2019-07-18 02:45:31
【问题描述】:

我意识到大多数代码示例在一个模块中导入材料模块组件并将其导入到任何地方使用,如下所示;

import { NgModule } from '@angular/core';
import {
  MatButtonModule,
  MatMenuModule,
  MatToolbarModule,
  MatIconModule,
  MatCardModule
} from '@angular/material';

@NgModule({
  imports: [
    MatButtonModule,
    MatMenuModule,
    MatToolbarModule,
    MatIconModule,
    MatCardModule
  ],
  exports: [
    MatButtonModule,
    MatMenuModule,
    MatToolbarModule,
    MatIconModule,
    MatCardModule
  ]
})
export class MaterialModule {}

但是想象一下,我只想在一个模块中使用 MatMenuModule,而其他模块可能不需要它,或者 3. 模块可能不需要第一个和第二个需要的组件,使用材料或其他共享模块的最佳做法是什么元素部分在其他模块中,为什么不在应用模块中导入和导出材料模块而不是到处导入?

【问题讨论】:

  • 如果您担心未使用的材料模块,可以将材料模块单独导入您的模块之一。对我来说,像在这里一样导入 MaterialModule 会更容易。不过还没有运行基准测试。
  • 和@francojay 仅通过应用模块导入和导出它意味着其他子模块可以访问和使用它而无需再次导入。
  • 是的,在这种情况下,我建议将 MaterialModule 导入 AppModule。尽可能保持模块化是很重要的。如果对它们进行分组没有性能问题,那么全局添加模块会更干净、更容易。

标签: angular


【解决方案1】:

我看到大多数人创建了一个单独的模块,例如 material.module.ts,并将所有 Mat 模块包含在此文件中,并将此模块导入他们需要的模块中。

这样,代码看起来更整洁,但在应用程序的大小方面效果不佳

我更喜欢只导入特定模块所需的 Mat 模块。

【讨论】:

  • 你确定性能问题我不记得我在哪里读过,但它们表明导入模块没有性能问题。
  • 当您进行生产构建 ng build --prod 时,未使用的模块将使用摇树技术移除。因此它们不会出现在最终代码中,因此不会出现性能问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 2019-03-14
相关资源
最近更新 更多