尝试在Sass样式表中共享变量和混合时,我遇到了一个令人不安的问题.
如果我使用@import来包含一个全局样式表,其中包括全局颜色,mixins等 – 当Rails组合清单文件中引用的所有样式表时,它将被再次包含.
或者,如果我的清单文件不包括全局样式表,但清单中的多个文件导入它,则全局样式表仍将被包含多次. GAH.
你怎么能解决这个问题?萨斯有秘密的包围守卫吗?我做错了吗?
解决方法
我不明白为什么这是您的具体问题的一个问题.变量和混合声明不应导致生成的css文件中的任何选择器或声明块.但是,当您为多个选择器使用mixin时,每个这样的选择器都包含相应的声明.这就是SASS如何处理它.
所以只要它只是变量和混合,如果它们在清单文件中被多次包含起来,这并不重要,因为这对编译文件没有影响.在一个站点节点上,我相信它是一个好的风格,SASS强制你明确声明每个文件的依赖关系.
但是,如果您在基本文件中还有要在单独文件中继承的选择器和声明,那么即使在编译过的文件中也可以包含多个选择器和声明.知道如何通过配置来防止这一点仍然是有趣的.但是,如果您将每个sass文件视为一个封装的规则,而不会跨文件继承,那么您应该能够按照惯例阻止您的问题.
例如,使用bootstrap-sass时,只能将混合和变量定义带入范围;
@import "bootstrap/variables"; @import "bootstrap/mixins";