怎么可以包括我的javascript文件而不单独列出它们?

时间:2012-09-17 15:45:45

标签: javascript ruby-on-rails ruby-on-rails-3.2 assets

我们有一个conf/environments/production.rb文件,单独列出所有js文件,例如

conf.assets.precompile += %w (highcharts.js)
conf.assets.precompile += %w (schedule.js)
conf.assets.precompile += %w (new_event.js)
conf.assets.precompile += %w (old_event.js)
conf.assets.precompile += %w (event_controls.js)
conf.assets.precompile += %w (other_stuff.js)
...

每次我有一个新的js文件时,我都必须在这里手动添加一个条目。

如何在不必手动维护此文件的情况下将它们全部包含在内?

1 个答案:

答案 0 :(得分:1)

从技术上讲,你是从错误的方向接近问题。您的config.assets.precompile应该只引用一些中央清单类型文件(例如,application.js),然后清单文件会根据需要引用js文件。

例如,您的application.js可能如下所示:

//= require highcharts.js
//= require schedule.js
//= require new_event.js
//= require old_event.js
//= require event_controls.js
//= require other_stuff.js

如此设置,所有列出的文件都将包含在application.js的预编译版本中,而application.js是您需要在布局中包含的唯一文件。

要自动添加新文件,您可以使用

//= require_tree .

将包含与application.js在同一目录中的每个.js文件,以及所有子目录中的文件。

实际上,一个包含应用程序中每个js文件的application.js文件有点多。您可以将文件分解为一组中央清单。例如,charts.js,events.js,misc.js.将这些文件添加到config.assets.precompile中。然后,当需要新文件时,更新清单文件而不是production.rb文件。