在assetsinitalizer( config/initializers/assets.rb)有一些文件明确定义为预编译。
# 预编译其他资产。 # 已经添加了application.coffee,application.scss和app / assets文件夹中的所有非JS / CSS。 # Rails.application.config.assets.precompile + =%w(search.js)
在此示例中,application.coffee和application.scss被称为“清单文件”。此文件应用于包含其他JavaScript或CSS资产。可以使用以下命令:
require <path>:该require指令的功能类似于Ruby自己的require。它提供了一种声明路径中文件依赖项的方法,并确保仅在源文件之前加载一次。
require_directory <path>:需要单个目录中的所有文件。之所以类似,是path/*因为它不遵循嵌套目录。
require_tree <path>:需要目录中的所有嵌套文件。其等效glob为path/**/*。
require_self:导致当前文件的正文插入到任何后续require指令之前。在CSS文件中很有用,其中索引文件通常包含需要在加载其他依赖项之前定义的全局样式。
stub <path>:从包含文件中删除文件
depend_on <path>:允许您声明对文件的依赖关系而不包含它。这用于缓存目的。对依赖文件所做的任何更改将使源文件的缓存无效。
一个application.scss文件可能看起来像:
/* *= require bootstrap *= require_directory . *= require_self */
另一个示例是application.coffee文件。这里包括jquery和Turbolinks:
#=需要jquery2 #=需要jquery_ujs #=需要Turbolinks #= require_tree。
如果您不使用CoffeeScript,而是使用纯JavaScript,则语法为:
//=需要jquery2 //=需要jquery_ujs //=需要Turbolinks //= require_tree。