在Rails 3.1中,是否真的不可能避免包含样式表的重复副本?

Clo*_*boy 12 ruby-on-rails sass ruby-on-rails-3.1

尝试在Sass样式表中共享变量和混合时,我遇到了一个令人沮丧的问题.

如果我@import用来包含一个全局样式表 - 一个包含全局颜色,mixins等的样式表 - 当Rails结合清单文件中引用的所有样式表时,它会再次被包含.

或者,如果我的清单文件,并没有包括全球样式表,但在清单导入它的多个文件,全局样式表仍然包含不止一次.GAH.

你怎么能绕过这个?萨斯有秘密包容警卫吗?我做错了什么吗?

emr*_*ass 7

我不明白为什么这是您的具体问题的问题.变量和mixin声明不应导致生成的css文件中的任何选择器或声明块.但是,当您将mixins用于多个选择器时,每个此类选择器都包含相应的声明.这就是SASS处理它的方式.

因此,只要它只是变量和mixins,它们在清单文件中多次包含它们就不重要了,因为这对编译文件没有影响.在站点节点上,我认为SASS强制您明确声明每个文件的依赖项是一种好的样式.

但是,如果您在基本文件中还有要在单独文件中继承的选择器和声明,那么即使在编译文件中也会多次包含这些选择器和声明.了解如何通过配置来防止这种情况仍然很有趣.但是,如果您将每个sass文件视为一组封装的规则而没有跨文件继承,那么您应该能够按惯例防止出现问题.

例如,当使用bootstrap-sass时,只需将mixins和变量定义放在范围内;

@import "bootstrap/variables";
@import "bootstrap/mixins";
Run Code Online (Sandbox Code Playgroud)

  • 我同意在每个文件中包含该行,以便您可以查看特定文件所依赖的内容.但是SASS(和LESS)中应该有一个简单的wau,它允许你在清单文件中只包含一次文件(如PHP require_once).此外,如果有一种方法可以指定将清单导入发送到他们自己的css文件的开关,那将是很好的,如果你遇到IE 4095选择器限制,就像我的团队现在一样(虽然我们知道我们需要清理CSS). (2认同)