更改application.js vs config.assets.precompile有什么区别?

时间:2013-10-10 03:48:02

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 asset-pipeline

我正在研究资产预编译,我很困惑。

让'说我创建了一个像rails new dummy这样的新应用程序。

这是生成的app/assets/javascripts/application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

它说This is a manifest file that'll be compiled into application.js。到目前为止,我们仍然很清楚,但我发现我们可以在config/application.rbconfig.assets.precompile << \some_regex\下设置另一种配置。

现在我不清楚更改application.jsconfig.assets.precompile之间的区别是选择要编译的内容。

我觉得我在这里错过了更大的图片,有人可以帮忙解释一下吗?

1 个答案:

答案 0 :(得分:1)

app.js文件用于Javascript,顾名思义。由于文件中的下面的行,jquery,jquery_ujs,turbolinks javascript库以及/ app / assets / javascripts文件夹中的每个Javascript文件都将被预编译。

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

您可以使用“config.assets.precompile”添加其他要预编译的内容,例如默认情况下Rails无法识别的字体文件和其他文件。您也可以使用它来包含javascript文件。但是,这种需求很少见。

它的一个例子是......

config.assets.precompile += %w( .svg .eot .woff .ttf )

我希望这是有道理的。