【发布时间】:2020-01-17 17:11:09
【问题描述】:
假设在我的 Angular 应用程序中,我有一个 NgModule,我想将一堆模块添加到它的 imports 数组中。我不想单独导入每个模块,而是将模块收集在一个组中并导入整个组。组中的一些模块实际上对那个 NgModule 有用,而其他模块则没有。
导入特定模块实际未使用的模块可能有哪些缺点?请注意,每个导入的模块仍然在应用程序中某处使用,只是在该特定模块中不需要它们。
例如,让我们考虑一个 index.ts 文件,其中包含常见输入组件的模块,位于路径 @app/common/inputs:
// whatever imports are necessary
const Modules = [
TextBoxModule,
SelectModule,
DatePickerModule,
// etc.
];
// export individual module types and the Modules array
我有 MyWonderfulComponent,它使用 TextBoxComponent 和 DatePickerComponent(分别使用 TextBoxModule 和 DatePickerModule)。但是,它不使用任何其他输入组件(包括 SelectComponent)。
尽管如此,作为一个懒惰的软件工程师,我将所有输入模块导入 MyWonderfulModule,因为它只需要 1 行而不是仅导入 TextBoxModule 和 DatePickerModule 的 2 行:
// some basic imports
import * as Inputs from '@app/common/inputs';
@NgModule({
declarations: [
MyWonderfulComponent
],
imports: [
...Inputs.Modules,
// etc.
],
exports: [
MyWonderfulComponent
]
})
export class MyWonderfulModule {
}
将不需要的 SelectModule(和一堆其他输入模块)与急需的 TextBoxModule 和 DatePickerModule 一起导入有什么缺点?
它是否有任何显着的性能或内存损失?它会导致更长的编译过程和/或更大的输出文件吗?或者可能不需要的导入“就在那里”并且对应用没有重大影响?
(记住 - 所有输入模块都在某处 使用 - 只是 MyWonderfulComponent 不使用文本框和日期选择器之外的任何东西)
【问题讨论】:
标签: angular import ng-modules