好的,所以我正在使用Rails 3.1开始一个新项目,我是CoffeeScript的新手。
无论如何,我喜欢让资产文件代表控制器的想法,但是如果我只希望 JS 在调用控制器时呈现怎么办?
例如,我有一个名为 Game
的控制器。 在我的games.js.coffee
文件中,我在其中放置了一些代码,并且每个页面请求都会调用它。 甚至与Games
无关的页面.
在Rails 3.0.7
中,我要做的是在应用程序erb文件中放置一个yield(:js)
,然后在我的Games#action
视图中调用content_for(:js)
。 这样,仅加载该控制器所需的 js。
或者,我的做法是错误的吗? 为每个页面请求加载和缓存所有 js 代码以提高性能是否更好?
感谢您的任何建议。
为每个页面请求加载和缓存所有 js 代码以提高性能是否更好?
基本上,Rails团队认为答案通常是"是"。大多数站点仅使用单个(缩小的)JS文件效果最佳,默认情况下在Rails 3.1中会获得该文件。这样,一旦用户访问了您网站的单个页面,所有其他页面都将快速加载,因为所有 JS 都已缓存。
如果你的网站有大量的JS(想想Facebook),那么我建议使用像RequireJS这样的库来构建你的网站,以异步加载很少使用的JS代码。否则,我不会费心在不同的控制器下加载不同的代码;为了边际利益,这是很多额外的工作。
看看这个插件,我认为它解决了你的问题:https://github.com/snitko/specific_assets