Ruby on Rails资产管道 - 如何仅在某些页面上加载某些资产?

时间:2013-05-26 01:40:37

标签: ruby-on-rails asset-pipeline

我在Ruby on Rails的第5章中,当R-o-R检测到所有css和js文件时,我遇到了“资产管道”。

浏览器确实需要减少请求,但与此同时,浏览器可能需要处理的代码多于应有的数量?

例如,我在gallery页面中使用了一个滑块jquery插件,因为RoR将插件与所有其他js文件融合为1个javascript.js,该插件将包含在about page,home page等中...... / p>

我可以为分隔的页面导入分隔的文件吗?怎么样?

由于

1 个答案:

答案 0 :(得分:3)

执行特定于页面的文件的一种方法是告诉资产管道生成额外的文件,然后手动加载它们。对于第一部分,告诉ROR生成特定文件,您需要调整config/application.rb文件并添加:

config.assets.precompile += %w(my_special_file1.js my_special_file2.js)

将要创建的所有文件添加到该列表中。像处理application.js文件一样处理每个文件。

然后,在您的页面中,您只需使用javascript_include_tag加载所需的文件即可。

虽然给出关于特定jQuery插件的示例可能不会从这种方法中获得太多好处,但作为一般策略,如果您想在网站的不同版本上包含一组不同的代码,这将非常有用。例如,管理站点与用户站点,或移动与常规浏览器站点。

正如depa所提到的那样,pro / con问题是一个更大的争论话题。但请注意,javascript + css文件通常很小,对gzip友好,并且对于资产管道,缓存友好。简而言之,除非您有特殊需要,否则您可能不需要优化它。