Angular 2+会加载整个模块还是仅加载导出的组件?

时间:2018-09-09 06:12:07

标签: javascript angular typescript

我有一个大模块,但是只导出一个组件,当我导入该模块时,Angular会加载整个模块还是仅加载导出的组件,以便我可以控制性能?我不想将组件移动到通用模块,因为它破坏了结构。谁能给我个建议吗?

更新代码示例

说我有3个组件的ModuleA,只导出其中1个:

@NgModule({
  // ...
  exports: [
    ComponentA
  ],
  declarations: [
    ComponentA,
    ComponentB,
    ComponentC
  ]
})
export class ModuleA { }

在ModuleB中,我导入ModuleA,以便可以使用ComponentA:

@NgModule({
  // ...
  imports: [
    ModuleA
  ]
})
export class ModuleB { }

当应用程序加载ModuleB时,它只是加载ComponentA还是加载ModuleA的所有组件?

1 个答案:

答案 0 :(得分:0)

因此,如果您说的是:

module.ts

export const foo;

export const bar;

export const baz;

然后 component.ts

import { foo } from './module'

相信,在开发过程中,您将拥有所有可用的成员,当构建生产版本时,Angular AoT建筑物将使其他成员摇摇欲坠。它使用Webpack这样做。

Webpacks树摇动机制在这里说明: https://webpack.js.org/guides/tree-shaking/

这是有角AoT编译器的文档: https://angular.io/guide/aot-compiler

无论如何,请尝试构建一个产品,如果一切正常,就可以了:)