rails的erb模板文件内嵌js脚本的压缩
2012-04-12 14:22
239 查看
这是在发布之前做的事情。生成文件替换原来的文件然后发布。
# -*- coding:utf-8 -*- # 约定! # 凡是.html.erb内嵌在script中的js代码如果是要本程序压缩的,那么在 # <script type="text/javascript">/* javascript block */</script>的javascript block中 # 不可以包含任何嵌入的erb模板标签。(否者压缩会出错) # 如果javascript block中需要嵌入erb模板标记请按照下面的方法做: # <script type="text/javascript" yyjcompress="false"> # var avatarPath = "<%= "#{@member.avatar}" %>"; # </script> # 上面的js代码不会被压缩,因此不用担心因为包含erb模板标签而使script中的js压缩失败。 # 要压缩的部分这样写: # <script type="text/javascript" yyjcompress="no"> # $(this).find("img").attr("src", "/" + avatarPath); # </script> # 这样上面的代码会被正确的压缩,又能使用erb模板标签生成的变量。 # 代码稍作修改以后也可以用于其它任何web框架的前端页面内嵌js的压缩。 # yuyingjian 2012-3-31 require 'uglifier' #infile 输入.html.erb文件路径 #outfile 输出.html.erb文件路径 def compress_js_in_erb(infile, outfile) compressed_erb = File.read(infile).gsub(/(?<=<script type="text\/javascript" yyjcompress=\"true\">)[\s\S]+?(?=<\/script>)/) do |js_block| Uglifier.compile(js_block, :ascii_only => true, :copyright => true) end File.open(outfile, "w") { |f| f.write(compressed_erb) } end #inpath 一般是rails的app/views的路径 #outpath 存放压缩文件的新views文件夹路径 Dir.mkdir不能创建嵌套的文件夹 所以你自己创建一下吧-_- def convert_erb_js_min(inpath,outpath) if File.directory? inpath if !File.directory? outpath Dir.mkdir(outpath) end Dir.foreach(inpath) do |file| if file !="." and file != ".." convert_erb_js_min(inpath+"/"+file, outpath+"/"+file) end end else if inpath =~ /\.html\.erb$/ compress_js_in_erb(inpath, outpath) end end end convert_erb_js_min("./views", "./compress/views")好了,把views文件夹替换为生成的,里面的scirpt已经被压缩了。
相关文章推荐
- 项目中对模板和js,css文件进行压缩的处理类
- 安装cocos2dx模板时,出现:输入错误: 没有文件扩展“.js”的脚本引擎。
- grunt合并压缩js,css文件(第二弹)
- yuicompressor+ant 混淆压缩多个js和css文件方法
- ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录
- 【gulp】JS文件的压缩混淆与雪碧图
- IIS启用GZip压缩JS等extjs静态文件
- node下使用UglifyJS压缩合并JS文件的方法
- node.js开机自启动脚本文件
- IIS7下js文件启用Gzip后却不压缩的解决方法
- rails4 new没有生成prototype.js之类的脚本解决办法
- 使用ruby脚本压缩文件夹(可排除文件或目录)
- 用GruntJS合并、压缩JS文件
- ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录
- WebResource实现在自定义控件中内嵌JS文件
- 续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,
- HTML文件中内嵌JS语句的几种方式
- SPORE,一个很好的实现JS命名空间的管理,模块的定义,与自动加载依赖模块的脚本文件
- Django模板中如何导入js、css等外部文件