【发布时间】:2020-06-04 20:30:50
【问题描述】:
我们目前正在尝试优化复杂的 Angular 应用程序(性能和包大小)。
我们发现我们有部分未使用的组件,但我们不能 100% 确定它们。无论如何......我们目前要问的问题是,摇树在 Angular 中究竟是如何工作的。
问题 1) 如果一个模块的声明、导入或提供程序数组中有条目,但该模块没有在任何地方使用,它们是否也被树摇晃删除了,或者它们是否包含在最终捆绑包?
例子:
@NgModule({
imports: [
FirstModule,
SecondModule // Is not used anymore (probably) but imported here
],
declarations: [SampleComponent] // Is not used anymore (probably) but imported here
})
export class SampleModule {
}
信息:该模块/组件的路由已被删除。
问题 2) 仅从路由模块中移除这些组件是否足以使摇树过程成功?
问题 3) 应该具备哪些条件才能使 treeshaking 过程以最佳方式工作?
使用 Angular 8.2 版
【问题讨论】:
-
取决于您是否使用 Ivy。你在用 Ivy 吗?
-
不,我们目前使用的是 Angular 8.2.x 版本
-
@kvetis 有同样的问题,但我们使用的是 Ivy,它会删除模板和控制器中未使用但包含在声明组件中的吗?
标签: angular typescript angular-cli angular8 tree-shaking