如何在Rails 3.1中管理资产?

时间:2011-05-21 15:18:23

标签: ruby-on-rails-3 coffeescript assets

好的,所以我正在使用Rails 3.1开始一个新项目,而且我是CoffeeScript的新手。

无论如何,我喜欢拥有代表控制器的资产文件的想法但是如果我只想在调用控制器时渲染JS呢?

例如,我有一个名为Game的控制器。在我的games.js.coffee文件中,我在其中放了一些代码,并为每个页面请求调用它。甚至与Games无关的页面。

Rails 3.0.7中,我要做的是在应用程序erb文件中添加yield(:js),然后在content_for(:js)视图中调用Games#action。这样,只加载了该控制器所需的js。

或者,我是否采取了错误的方式?是否更好地为每个页面请求加载和缓存 ALL js代码以提高性能?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:5)

  

为每个页面请求加载和缓存ALL js代码以提高性能是否更好?

基本上,Rails团队认为答案通常是“是”。大多数网站只使用一个(缩小的)JS文件,最好在Rails 3.1中获得。这样,一旦用户访问了您网站的单个页面,所有其他页面都将快速加载,因为所有JS都已缓存。

如果您的网站有一个巨大的数量的JS(想想Facebook),那么我建议您使用像RequireJS之类的库来构建您的网站以异步加载很少使用的JS代码。否则,我不会在不同的控制器下加载不同的代码;为了边际效益,这是一项额外的工作。

答案 1 :(得分:0)

看看这个插件,我认为它可以解决您的问题:https://github.com/snitko/specific_assets