使用Rails 3.2和Asset Pipeline压缩JST模板

时间:2012-04-25 05:21:26

标签: ruby-on-rails-3 backbone.js asset-pipeline ejs

我正在使用rails-backbone,因此通过EJS gem(由rails-backbone捆绑)使用JST模板。这不是一个大问题,但JS压缩器不会删除JST模板中的空白。因此,显而易见的问题是:如何通过资产管道压缩jst.ejs模板?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我的解决方案:

# initializers/clean_ejs_template.rb

require 'ejs'

module EJS
  class << self
    def compile(source, options = {})
      source = source.dup

      escape_quotes!(source)
      #replace_interpolation_tags!(source, options)
      #replace_evaluation_tags!(source, options)
      escape_whitespace!(source)

      # remove extra whitespace and newlines
      source.gsub!(/\s{2,}|\\n/,'')
      # use _.template instead
      "_.template('#{source}')"

      #"function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};" +
      #  "with(obj||{}){__p.push('#{source}');}return __p.join('');}"
    end
  end
end