【发布时间】:2019-05-23 10:00:32
【问题描述】:
此问题与this answer 有关。主要目标是找到优化主题组件包大小的最佳方法。
嗯,我们有一个这样的主题:
amber
├ _variables.scss
├ theme.scss
_variables.scss:
$amber-primary: mat-palette($orange);
$amber-accent: mat-palette($orange, A700, A100, A400);
$amber-warn: mat-palette($mat-red, A200);
$amber-theme: mat-light-theme($amber-primary, $amber-accent, $amber-warn);
theme.scss:
.amber-theme {
@include angular-material-theme($amber-theme);
}
在父文件夹中有一些_variables 文件将所有颜色和主题收集在一起:
@import '~@angular/material/theming';
@import 'colors';
@import 'amber/variables';
...
看起来很酷,对吧?但!如果你将它与scss-bundler 捆绑在一起并创建你自己的库,它仍然应该不会很大(我有 11 Kb 的 ~14 个主题)。当您将 styles.scss 包含在所有主题中时 - 它按预期工作,一切都应该没问题。
当您想要自定义某些组件时会出现问题。正如相关答案所说,包含styles.scss 确实是个坏主意,而且这是真的 - 每个主题组件大约有 2,68 Mb。但包括_variales.scss 也提供了太多 - 每个主题组件 260 Kb 仍然很重要。我研究了生成的代码,发现每个主题组件都包含'~@angular/material/theming。好吧,这应该适合 Angular 隔离组件样式的方式,我不能只删除这个文件,因为有相关的 mixin,但也许有另一种方法可以使这个文件全局化并且不将它包含在每个文件中我要自定义的组件?
【问题讨论】: