Ruby on rails 使用配置文件和使用清单文件之间的Rails资产管道差异

Ruby on rails 使用配置文件和使用清单文件之间的Rails资产管道差异,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,两者之间有什么区别 将css文件名添加到资产预编译配置 config.assets.precompile += ['foo.css', 'bar.css'] 并放入清单文件application.css /* * This is a manifest file that'll automatically include all the stylesheets available in this directory * and any sub-directories. You're fre

两者之间有什么区别

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

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

并放入清单文件application.css

/* * This is a manifest file that'll automatically include all the stylesheets available in this directory * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at * the top of the compiled file, but it's generally better to create a new file per style scope. *= require_self *= require foo *= require bar */ /* *这是一个清单文件,将自动包含此目录中所有可用的样式表 *和任何子目录。您可以自由地将应用程序范围的样式添加到此文件,它们将显示在 *编译文件的顶部,但通常最好按照样式范围创建一个新文件。 *需要自己 *=需要foo *=所需钢筋 */

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


但是,如果您想在某些页面中只使用foo.css(而不使用application.css和bar.css),则必须在config.assets中执行此操作,以确保会独立编译foo.css资产。

我不确定Sprocket是否有意采用这种方式,但是,当来自资产管道的文件包含在application.css(或者application.js)中时,它们首先被连接,然后被预编译,从而为包含在相应清单文件中的所有文件生成一个文件

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

需要进一步区分的是Rails是否会在默认情况下预编译文件。根据资产管道上的数据:

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

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