这可以动态加载 SASS 文件吗?
假设我在 Rails Initializer 中声明了一个全局常量BRAND
。我想要的是,导入一个在常量中指定的名称的 SASS 文件BRAND
。
我想要像@import BRAND
“application.sass”这样的东西。请告诉我怎么可能。谢谢。
这可以动态加载 SASS 文件吗?
假设我在 Rails Initializer 中声明了一个全局常量BRAND
。我想要的是,导入一个在常量中指定的名称的 SASS 文件BRAND
。
我想要像@import BRAND
“application.sass”这样的东西。请告诉我怎么可能。谢谢。
您可以将多个预处理器与资产管道一起使用,从而ERB
在 SASS 处理器发挥作用之前使用。为此,只需附加.erb
到要预处理的文件的文件名。例如:
配置/初始化程序/brand.rb:
BRAND = 'mybrand'
应用程序/资产/样式表/_mybrand.css.scss:
$brand-color: steelblue;
应用程序/资产/样式表/main.css.scss.erb:
@import '<%= BRAND %>';
body {
background: $brand-color;
}
顺便说一句,在require
使用 SASS 时,您不应该使用 Sprockets 的指令,正如Asset Pipeline 上的 Rails 指南所建议的那样:
如果你想使用多个 Sass 文件,你通常应该使用 Sass @import 规则而不是这些 Sprockets 指令。使用 Sprockets 指令,所有 Sass 文件都存在于它们自己的范围内,使变量或 mixin 仅在定义它们的文档中可用。
您可以在您的 (haml) 布局文件中执行此操作,如下所示:
= stylesheet_link_tag BRAND, :media => 'all'
(或者如果您使用的是 ERB,则使用额外的 <% %>)。