从下面的Angular-CLI documentation,我无法收集“有限的”树摇动或死代码消除的含义。这是否意味着我们不应该依赖angular-cli提供的树抖动和死代码消除抽象?
捆绑&树摇动
所有版本都使用捆绑和有限树木抖动,而--prod版本也通过UglifyJS运行有限死代码。
另一个文档问题 似乎--prod为free提供了--aot标志。这意味着如果您的构建是--prod,则代码已预先编译到Javascripts中。但是,从-aot特定文档(如下所述)看来,默认的aot标志似乎是 false 。有这些旗帜的经验吗?
AOT - aot默认值:false
答案 0 :(得分:1)
我最近有同样的问题,所以这是我的研究结果。
Tree-shaking删除依赖项注入(DI)定义的依赖项。
摇树是指编译器选项,如果应用程序中未引用该代码,则该代码将从最终捆绑包中删除代码。
由UglifyJS执行的dead code elimination是后处理步骤,它删除了无法访问的代码(例如,返回后的代码)。
dead_code(默认值:true)-删除无法访问的代码
自Angular CLI 6起,已对构建系统进行了全面改进,使其更易于配置。 Build configuration选项已移至工作区配置文件(angular.json)。
当您使用 CLI创建项目,您可以通过以下方式使用该配置 指定--prod选项。
默认开发环境和生产之间的区别在于,开发配置使用CLI缺省值(例如源映射),而生产配置则启用AOT,优化等。--prod元标记针对“生产”配置并启用runtime production mode。
切换到生产模式可以通过禁用来加快运行速度 开发特定的检查,例如双重变更检测周期。