首页 > 代码库 > shell文本处理——最基本方法压缩js文件

shell文本处理——最基本方法压缩js文件

关于javascript代码文件的压缩在之前的文章中提到过(http://blog.csdn.net/u010487568/article/details/19701575),一般来说有三种方式:

  • 仅压缩空白、注释等字符(最基本方法)
  • 压缩空白、注释并替换变量名
  • 压缩恐怖、注释、替换变量名,同时最小化文件所有的单词
最近在进一步学习shell,对这个古老的工具越发的感到高效便捷,因此对于这个主题实现了shell版本的最基本方法的实现。
主要的策略如下:
  • 去除单行注释
  • 去除换行符和制表符
  • 压缩多个空格为单个
  • 去除多行住处内容
  • 将“ (”、“  )”、 “{  ”、“  }”、 “  ;  ” 、“ : ” 、“  =  ”等字符两侧空格去除
具体实现如下:
#
#!/usr/bin
#
########################################################
#Filename: compreee-js.sh
#Author  : Oshyn Song
#Time    : 2014-8-19
#Desc    : compress the javascript file by basic method
########################################################

if [ $# -ne 1 ];
then
  echo "Usage: sh $0 js-filename";
  exit;
fi

jsfile=$1;

echo "Compress $jsfile start ...";

  cat -s $jsfile      |   sed 's!//.*$!!g'    |   tr -d '\n\t'        |   tr -s ' '           |   sed 's!/\*.*\*/!!g' |   sed 's! \?\([+=\!&%$\*\|><{}();,:]\) \?!\1!g'  >  "compress.${jsfile}";

echo "process finished.";

测试如下:
原生代码
;(function(){
	function __(id){
		return document.getElementById(id);
	}

	function Ajax(options){
		if (typeof XMLHttpRequest == 'undefined'){
			XMLHttpRequest = function(){
				return new ActiveXObject(
					navigator.userAgent.indexOf('MSIE 5') >= 0 ?
					'Microsoft.XMLHTTP' : 
					'Msxml2.XMLHTTP'
				);
			};
		}
..........
压缩后代码:
;(function(){function __(id){return document.getElementById(id);}function Ajax(options){if(typeof
        XMLHttpRequest=='undefined'){XMLHttpRequest=function(){return new ActiveXObject(navigator.userAgent.indexOf('MSIE 5')>=0 ?'Microsoft.XMLHTTP':'Msxml2.
        XMLHTTP');};}
.......