【问题标题】:Why is require_tree before require_self in default application.css?为什么在默认 application.css 中 require_self 之前 require_tree?
【发布时间】:2015-03-08 02:59:08
【问题描述】:

我注意到在生成一个新的 Rails 4.2 应用程序后,application.css 中要求的顺序发生了变化。

 *= require_tree .
 *= require_self

不应该反过来吗?即使在Guides 中也不是这样......

【问题讨论】:

  • 我目前没有可以引用的官方行,但我相信require_self 确实包括清单文件本身以及您在文件正文中包含的任何 JS 或 CSS,但清单的其余部分仅指示要加载哪些文件。您可以删除require_self 并且仍然有一个正常运行的应用程序。所以简而言之,您可以反转这些行,或者保留它,或者如果您愿意,可以删除 require_self,它没有任何区别。
  • @PaulRichter 我认为它确实有所作为。在我的应用程序中,我明确定义了顶部的位置,如果我删除它,application.css 文件将到达底部并覆盖定义的 css 规则。
  • @shail 我不确定我是否完全理解你的描述,但是当我暗示“位置无关紧要”时,我错了。如果您看一下我在下面的回答,我会根据我发现的一些研究更正该声明。

标签: ruby-on-rails asset-pipeline


【解决方案1】:

进行更改是为了允许application.css 中定义的样式覆盖以前包含的样式。

参见Rails issue #11639this commit,它们改变了require 指令的顺序。

【讨论】:

    【解决方案2】:

    如官方文档here中所述,也在此SO答案here中解释:

    这会将文件中包含的 CSS(如果有)放在 require_self 调用的精确位置。

    这与我在 cmets 中所写的内容略有不同,因为如上面的引用所示,清单中的 JS 或 CSS 将插入到 require_self 的位置。如果您以后的资产依赖于您在清单中编写的内容,这将变得很重要。

    当然,如果您这样做,最好还是将“内联”资产放在单独的文件中,以保持清单干净。

    【讨论】:

    • 而 janfoeh 的回答解释了为什么它在那个版本的 Rails 中被“反转”了,我不知道。
    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 2011-09-18
    • 2013-07-14
    • 1970-01-01
    • 2018-08-08
    • 2012-12-09
    • 2012-10-06
    • 2011-09-17
    相关资源
    最近更新 更多