导出我所有管道的Angular模块会支持树震动吗?

时间:2018-09-02 19:58:44

标签: angular typescript webpack

我有一个专用于容纳Angular应用程序所有管道的模块。

仅导出管道的模块示例。

@NgModule({
    imports: [
        CommonModule
    ],
    declarations: [
        FromNowPipe,
        ToNowPipe,
        ShortAgoPipe,
        SuffixPeriodPipe
    ],
    providers: [
        FromNowPipe,
        ToNowPipe,
        ShortAgoPipe,
        SuffixPeriodPipe
    ],
    exports: [
        FromNowPipe,
        ToNowPipe,
        ShortAgoPipe,
        SuffixPeriodPipe
    ]
})
export class PipesModule {
}

我一直在想,一个容纳我所有管道的模块是否会破坏树木的摇动。从未使用过的管道仍将被添加到最终捆绑中。

我问的原因是管道不是组件。因此,AOT编译器可能不会像对组件和指令那样跟踪它们的使用情况。

我应该将管道分解成较小的模块,然后仅在知道需要它们时才导入模块吗?

1 个答案:

答案 0 :(得分:1)

与任何其他 Angular 组件/指令一样,Pipes 也会发生相同的摇树机制。

这听起来对延迟加载性能更重要。

看看 Ng Material 如何管理组件,每个组件有一个模块。

总而言之,我建议您将 Pipes 拆分为单独的模块或小组。