问候栏杆和Javascript大师!Rails Javascript压缩/对respond_to javascript响应的缩小?
我有一个项目,我在
respond_to do |format|
format.js
end
块返回一个大的JavaScript文件。
我想弄清楚如何缩小或压缩.js响应,因为.js.erb视图充满了评论,并根据控制器的结果大小不同。
任何人有任何想法?
问候栏杆和Javascript大师!Rails Javascript压缩/对respond_to javascript响应的缩小?
我有一个项目,我在
respond_to do |format|
format.js
end
块返回一个大的JavaScript文件。
我想弄清楚如何缩小或压缩.js响应,因为.js.erb视图充满了评论,并根据控制器的结果大小不同。
任何人有任何想法?
好吧,也许我有一个解决办法:
respond_to do |format|
format.js { self.response_body = minify(render_to_string) }
end
这完美的作品。当然,关键是方法minify方法。你会发现很多JS缩小器。例如,你可以使用这个(如果许可证允许的话):http://github.com/thumblemonks/smurf/raw/master/lib/smurf/javascript.rb - 它基于Crockford的jsmin.c。
如果你把这个文件到您的lib,需要它,你的缩小方法可以是这样的:
def minify(content)
min = Smurf::Javascript.new(content)
min.minified
end
希望它能帮助你。
如果你打算自动缩小,那么你可能应该去找一块中间件。令人惊讶的是我找不到任何东西(有很多针对CSS/JS,但它是关于静态资产而不是动态内容),但编写它并不是一个这样的问题。
钢轨3使用内置Uglifier法(资产管道默认)
见拉狄克的代码上方和正交换这
def minify(content)
Uglifier.new.compile(content)
end
对于轨道4:
render js: Uglifier.new.compile(render_to_string)
感谢pawien!这给了我肯定的想法。 :)将结果传递给块并用缩小器处理它似乎是一个很好的解决方案。然后我只需要弄清楚如何缓存输出。我会在今天和明天玩这个游戏..我可能会误导你。 :D – 2010-09-29 16:11:52
有没有什么办法在Rails3.2中做到这一点,只使用自己的资产管道内置功能? – 2012-06-28 11:23:34
谢谢radek!好的解决方案纳扎尔,添加我的轨道3修改位下面 – djburdick 2013-05-05 18:39:32