问候Rails和Javascript专家!
我有一个项目,我在
中返回一个大的javascript文件respond_to do |format|
format.js
end
块。
我试图找出如何缩小或压缩.js响应,因为.js.erb视图中充满了注释,并且根据控制器的结果大小不一。
有人有什么想法吗?
答案 0 :(得分:12)
对于Rails 4:
render js: Uglifier.new.compile(render_to_string)
答案 1 :(得分:5)
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,但它是关于静态资产而不是动态内容)但写它不会是一个问题。
答案 2 :(得分:3)
对于使用内置Uglifier方法的rails 3(资产管道的默认方法)
请参阅上面的Radek代码,然后将其交换。
def minify(content)
Uglifier.new.compile(content)
end