angular - Angular Material 模块是否会自动进行树摇动?

标签 angular angular-material

我看到有 Angular Material 的单个模块以两种方式导入。

  1. 将所有 Angular-Material 模块(MatButtonModule、MatRadioModule 等)导入到一个巨大的 Angular-material.module 中,然后将该模块导入到任何需要一些 Angular-Material 内容的 Angular 模块中。
  2. 将各个 Material 模块导入到各自使用的模块中。例如,我将在我的 RegistrationModule(用户填写注册表)中导入 ReactiveFormsModule,但我不会将其导入到其他没有表单的延迟加载模块中。

在我看来,第二个选项很乏味且难以维护,因此我更喜欢第一个选项。但是,我希望最终的包大小尽可能小。


这引出了我的问题:


Angular Material 模块会自动进行树摇吗?
换句话说 - 当我将巨大的 angular.material.module.ts 导入到我的延迟加载模块中时 - 最终的 bundle 是否包含相应模块中未使用的 Angular Material 模块?


我应该坚持第二个选项,还是可以将其全部塞入巨大的 angular-material.module 中?

最佳答案

不,这不好,不要这样做。

以下是有关此主题的研究:https://indepth.dev/stop-using-shared-material-module/

基本上,如果这样的魔法成为可能,那么没有人会费心将 Material 库拆分为模块的色调,并且通常每个人都会制作一个巨大的模块,并希望编译器能够理解如何处理它。

也许将来,随着更多与 Ivy 相关的事情的出现,这是可能的,但现在,它可能会排除一些服务和组件或纯函数,也许不会。

即使它会——通常编写代码的做法是不好的,从逻辑上讲,它不应该存在。

关于angular - Angular Material 模块是否会自动进行树摇动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63416815/

相关文章:

html - CSS Flex 将元素堆叠在一起

javascript - Angular 2 和 SQLite 连接

sass - 访问 Angular-Material SCSS 变量 (Angular4)

angular - Mat-tree 创建一棵树,其中包含要显示的值和 id

angular - 透明操作栏 : using NativeScript in combination with Angular

angularjs - 带有 RequireJs 的 Angular-Material

javascript - 指令模板上的 $document.ready()?

angular - 在 ngx quill 字段上粘贴时删除颜色

angular - 如何在 Angular 2 的 ngFor 中设置绑定(bind)?

javascript - 何时可以通过 Angular 2 使用模板引擎?