Сжатие / минимизация Javascript в Rails для ответа javascript response_to? - PullRequest
7 голосов
/ 27 сентября 2010

Greetings Rails и Javascript Gurus!

У меня есть проект, в котором я возвращаю большой файл javascript в блоке

respond_to do |format|
   format.js
end

.

Я пытаюсьвыясните, как я могу уменьшить или сжать ответ .js, поскольку представление .js.erb полно комментариев и различается по размеру в зависимости от результатов, полученных от контроллера.

У кого-нибудь есть идеи?

Ответы [ 3 ]

12 голосов
/ 10 сентября 2013

Для рельсов 4:

render js: Uglifier.new.compile(render_to_string)
5 голосов
/ 28 сентября 2010

ну, может быть, у меня есть решение:

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 - он основан на jsmin.c Крокфорда.

Если вы поместите этот файл в свою библиотеку, потребуйте его, ваш minifyМетод может выглядеть следующим образом:

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

Надеюсь, что он вам помог.

Если вы планируете делать минификацию автоматически, то вам, вероятно, стоит поискать часть промежуточного программного обеспечения.Удивительно, но я не смог найти ни одного (многие нацелены на CSS / JS, но речь идет о статических ресурсах, а не о динамическом контенте), но написать его было бы не такой проблемой.

3 голосов
/ 05 мая 2013

Для рельсов 3 с использованием встроенного метода Uglifier (по умолчанию для конвейера активов)

См. Код Радека выше и просто поменяйте его местами.

  def minify(content)
    Uglifier.new.compile(content)
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...