1

有什么区别

将 css 文件名添加到资产预编译配置

config.assets.precompile += ['foo.css', 'bar.css']


并放入清单文件 application.css

/*
 * 这是一个清单文件,它将自动包含此目录中可用的所有样式表
 * 和任何子目录。您可以自由地将应用程序范围的样式添加到此文件,它们将出现在
 * 编译文件的顶部,但通常最好为每个样式范围创建一个新文件。
 *= 要求自我
 *= 需要 foo
 *= 需要栏
*/

?

4

2 回答 2

0

当您只想在 HTML 标头中包含 application.css 时,它是相同的。

但是如果你想在某些页面中只使用 foo.css(没有 application.css 和 bar.css),你必须在 config.assets 中这样做,以确保会有 foo.css 资产独立编译。

于 2013-06-11T08:07:04.163 回答
0

我不确定 Sprockets 是否是故意设计成这种行为的,但是当资产管道中的文件包含到 application.css(或者 application.js)中时,它们首先被连接然后预编译,从而产生一个文件对于包含在相应清单文件中的所有文件。

相比之下,指定为config.assets.precompile的文件是一次性、即席编译的。如果指定了三个文件,那么将为每个文件生成一个单独的预编译文件(假设它是一个有效的、可预编译的文件)。

要绘制的另一个区别是 Rails 是否会默认预编译文件。根据资产管道上的Rails 文档:

编译文件的默认匹配器包括 application.js、application.css 和所有非 JS/CSS 文件(即,.coffee 和 .scss 文件在编译为 JS/CSS 时不会自动包括在内)

因此,假设清单中包含 CSS 或 JS 文件,您需要将其添加到其中config.assets.precompile,以便对其进行预编译和渲染。

于 2013-06-11T08:24:50.970 回答