Javascript 有没有办法缩小Rails UJS的响应?
sprockets完成了js资产的所有缩小,但是很多javascript都是用Javascript 有没有办法缩小Rails UJS的响应?,javascript,jquery,ruby-on-rails-3,minify,ujs,Javascript,Jquery,Ruby On Rails 3,Minify,Ujs,sprockets完成了js资产的所有缩小,但是很多javascript都是用response\u to:jsUJS响应编写的 在编程时使javascript可读也会使其充满无用的数据,而浏览器在处理这些数据时并不需要这些数据(如可读的变量名和空格) 有没有一种方法可以自动缩小/丑化UJS响应,使其在编程时保持可读性,但在发送到浏览器时缩小?(缩小源代码不是一个选项)首先,您谈论的不一定是UJS,而是从ruby模板动态生成的javascript UJS通常不是通过动态javascript完成的,
response\u to:js
UJS响应编写的
在编程时使javascript可读也会使其充满无用的数据,而浏览器在处理这些数据时并不需要这些数据(如可读的变量名和空格)
有没有一种方法可以自动缩小/丑化UJS响应,使其在编程时保持可读性,但在发送到浏览器时缩小?(缩小源代码不是一个选项)首先,您谈论的不一定是UJS,而是从ruby模板动态生成的javascript UJS通常不是通过动态javascript完成的,而是通过返回动态数据,然后由静态javascript操作。这有很多好处,;与本例相关:这意味着您的javascript已经被缩小(可能是缓存的)客户端,您只需发送序列化数据 如果可以,您可能想考虑使用这种方法 如果不能,可以使用中间件自动缩小RJS操作,如下所示(原始伪编码版本)。但要谨慎行事。您还需要考虑缩减的好处是否值得花费,例如缩短每一个请求的时间/成本,以及向客户发送更大文件的时间/成本。 有关中间件的更多信息
谢谢,这个答案是一种手动操作的方法。有没有一种方法可以自动完成?
module RJSMinifier
def initialize(app)
@app = app
end
def call(env)
status, headers, response = @app.call(env)
# pseudocode: if this is not an RJS request or the request did not
# complete successfully, return without doing anything further
if (this request is not RJS or status is not ok)
return [status, headers, response]
end
# otherwise minify the response and set the new content-length
response = minify(response)
headers['Content-Length'] = response.length.to_s
[status, headers, response]
end
def minify(js)
# replace this with the real minifier you end up using
YourMinifier.minify(js)
end
end