0

I'm studying assets precompile and I'm confused.

Let' say I created a new application like rails new dummy.

This is the generated 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 .

It says This is a manifest file that'll be compiled into application.js. It's still clear up to this point, but I found out that there's another configuration that we can set under config/application.rb: config.assets.precompile << \some_regex\.

Now I'm unclear what's the difference between changing application.js vs config.assets.precompile for selecting what to be compiled.

I feel like I'm missing the bigger picture here, can someone help to explain this?

4

1 回答 1

1

顾名思义,application.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 )

我希望这是有道理的。

于 2013-10-10T04:10:00.860 回答