基本上,我有一个结构,它曾经在3.0.x中完美工作,现在它因undefined variable
错误而中断。
- 部分
- _base.css.sass
- _header.css.sas
- main.css.sass
- application.css.sass
application.css.sass
:
//=require 'main'
main.css.sass
:
@import 'partials/base'
@import 'partials/header'
很简单的东西。
我在_header.css.sass
上遇到错误因为它使用了_base.css.sass
上定义的变量
我以前没有遇到过这个错误,这对我来说毫无意义,因为我们在导入_header.css.sass
的上下文中导入_base.css.sass
上的这些变量。
我是否也必须在每个部分上导入_base.css.sass
?main.css.sass
需要全局变量,如果它们不能在您需要的部分中使用,那么它们有什么意义?
如果我的结构完全错误,请给我一个替代方案,我很乐意提供建议。
您不能使用//=require
来包含"动态"SASS内容,如mixin和变量,因为它只用于包含最"静态"的内容(如纯CSS)。你必须@import
你在application.css.sass
中的所有文件。Railscasts在第268集中对此进行了很好的解释。
对于原始主题有一个简单的解决方案。您的应用程序和主css文件应该是scss文件。这意味着您可以使用已知的语法:
/*
*= require_self
*= require main
*/
在main.scss中,您可以导入这样的部分:
@import 'partials/base'
@import 'partials/header'
这些文件是sass文件,您可以从sass的伟大中受益;-)
我想我也遇到了同样的问题,帮助我的是在@imports之前声明变量。希望这能帮助到别人。
显然,您必须使用application.css.sass
作为清单,否则什么都不起作用。
基本上,您可以分离所有内容,但它们需要从应用程序文件中调用,因为作用域是不共享的。
如果你问我的话,有点太强制了…
这是一个sass文件。在application.css.sass
中使用@import
,而不是require
。require
适用于没有导入系统的普通css或模板引擎。