如何在Rails 3.1中管理资产?

cbm*_*eks 4 assets coffeescript ruby-on-rails-3

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

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

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

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

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

谢谢你的任何建议.

Tre*_*ham 5

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

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

如果你的网站有一个庞大的 JS的量(认为Facebook),那么我建议你架构网站异步加载很少使用的JS代码,使用就像一个图书馆RequireJS.否则,我不会在不同的控制器下加载不同的代码; 对于边际收益来说,这是一项额外的工作.