【发布时间】:2017-11-09 02:15:39
【问题描述】:
我正在使用最新的 Angular(4) 和 Angular CLI。我遵循了关于 SO 的建议来设置组件可用的全局 scss。
Angular-CLI global scss vairables
我的结构是这样的
/
styles.scss
/styles
variables.scss
mixins.scss
common.scss
/app
/component1
component1.scss
/component2
component2.scss
主要的styles.scss文件有如下代码
@import './styles/variables.scss';
@import './styles/mixins.scss';
@import './styles/common.scss';
在我的组件中,我以
的语句开始每个组件的 scss 文件@import '~styles.scss';
我认为这是将全局变量/mixins/common 引入组件的 scss 的正确方法。然而,当我开始在组件中包含组件时,我开始注意到 Webpack 实际上是在页面中为每个组件创建一个块,并且每个组件都将所有全局 scss 都写在其中。因此,组件 1 将有一个块,顶部有所有变量、mixins、常见的东西,然后在页面中的另一个组件 2 的正下方有另一个块,再次包含所有这些信息。
除了效率极低之外,这意味着全局样式在每次加载时都会覆盖自己(可以在 chrome 调试中看到)一次。
非常感谢一些方向。
【问题讨论】:
-
您可以禁用
viewEncapsulation以使用全局样式 -
究竟是什么意思?我不必在我的组件样式中 @import 主要的 styles.scss 吗?我已经尝试过了,但 webpack 无法编译,因为它说它不知道组件 scss 文件中的某些 scss 变量是什么。
-
刚刚发现这似乎是一个已经在讨论的问题。 github.com/angular/angular-cli/issues/1261 但如果有人有聪明的解决方案,那将不胜感激。
-
如果您阅读了最后一条评论,您可以找到答案。
标签: css angular webpack angular-cli