Rails Javascript压缩/缩小对respond_to javascript响应?

问候路由和Javascript大师!

我有一个项目,我将返回一个大的javascript文件

respond_to do |format| format.js end 

块。

我试图找出如何缩小或压缩.js响应,因为.js.erb视图充满了注释,并且根据控制器的结果大小不一。

有人有主意吗?

好吧,也许我有一个解决方案:

 respond_to do |format| format.js { self.response_body = minify(render_to_string) } end 

这非常有效。 当然,关键是minify方法。 你会发现很多JS minifiers。 例如,你可以使用这个(如果许可证允许): http ://github.com/thumblemonks/smurf/raw/master/lib/smurf/javascript.rb-它基于Crockford的jsmin.c。

如果你把这个文件放到lib中,需要它,你的minify方法可能如下所示:

 def minify(content) min = Smurf::Javascript.new(content) min.minified end 

希望它对你有所帮助。

如果你计划自动缩小,那么你可能应该选择一个中间件。 令人惊讶的是我找不到任何东西(有很多针对CSS / JS但它是关于静态资产而不是动态内容),但编写它并不是一个问题。

对于Rails 4:

 render js: Uglifier.new.compile(render_to_string) 

对于使用内置Uglifier方法的rails 3(资产管道的默认方法)

请参阅上面的Radek代码,然后将其交换。

  def minify(content) Uglifier.new.compile(content) end