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

Dus*_* M. 7 javascript ruby-on-rails

问候路由和Javascript大师!

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

respond_to do |format|
   format.js
end
Run Code Online (Sandbox Code Playgroud)

块.

我试图弄清楚如何缩小或压缩.js响应,因为.js.erb视图充满了注释,并且根据控制器的结果而变化.

有人有主意吗?

Sid*_*owe 12

对于Rails 4:

render js: Uglifier.new.compile(render_to_string)
Run Code Online (Sandbox Code Playgroud)


Rad*_*sky 5

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

respond_to do |format|
  format.js { self.response_body = minify(render_to_string) }
end
Run Code Online (Sandbox Code Playgroud)

这非常有效.当然,关键是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
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你.

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

  • 在Rails3.2中有没有办法做到这一点,只使用自己内置的资产管道功能? (2认同)