如何在Rails 3.1中管理资产?

4

好的,所以我正在使用Rails 3.1开始一个新项目,我对CoffeeScript还不太熟悉。

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

例如,我有一个名为Game的控制器。在我的games.js.coffee文件中,我放了一些代码,并且它被每个页面请求调用。即使页面与Games没有任何关系。

Rails 3.0.7中,我会在应用程序erb文件中放置一个yield(:js),然后在我的Games#action视图中调用content_for(:js)。那样,只有该控制器需要的js才会被加载。

或者,我这样做有问题吗?将所有js代码都加载并缓存以提高性能是否更好?

感谢任何建议。

2个回答

5
“是否在每个页面请求中加载和缓存所有的js代码以提高性能?”基本上,Rails团队决定通常是肯定的。大多数网站最好只使用一个(压缩后的)JS文件,在Rails 3.1中默认提供。这样,一旦用户访问了您的网站的一个页面,所有其他页面将快速加载,因为所有的JS都已经被缓存。如果您的网站有大量的JS(例如Facebook),那么我建议使用像RequireJS这样的库异步加载很少使用的JS代码来构建您的网站。否则,我不会费力地在不同的控制器下加载不同的代码;这只是为了获得微小的好处而进行的大量额外工作。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接