JS中包含大量的空格和制表符,这回拖累页面的加载速度,所以我们需要对JS文件进行压缩,提高载入速度
我们可以利用Shell命令模拟出来这个工具
我们使用tr来进行文本替换 以及sed命令进行更改
1.移除换行符和制表符
2.压缩空格
3.替换注释 /*内容*/
4.替换下面的内容
“{ ” 替换为 “{”
“} ” 替换为 “}”
“( ” 替换为 “(”
“) ” 替换为 “)”
“, “替换为”,”
“; ” 替换为 “;”
对应的解压缩或者回复的过程
移除”;\n” 替换”;”
用 “{\n” 替换 “{” “\n}” 替换
我们首先进行压缩的操作
移除 ‘\n’ 和 ‘\t’
tr -d ‘\n\t’
移除多余的空格
tr -s ‘ ‘
或者
sed ‘s/[ ]\+/ /g’
移除注释
sed ‘s:/\*.*\*/::g’
我们需要使用 /* */所以以冒号作为sed的定界符,不必对/进行转义了
*在sed中被转义为了 \*
.*来匹配/* */之间的文本
移除 { } ( ) ; : 前后的所有空格
sed ‘s/ \?\([{}();,:]\) \?/\1/g’
在其中的
\([{ } ( ) ; , :]\) 用于匹配集合 [ { } ( ) ; , : ] ,
处于可读性方面的考虑,我们加入了空格
然后 \? 可以匹配了前后出现的空格
然后我们使用的()包裹的上面的符号集合,作为了分组匹配的内容,进行了向后的引用
我们使用一个脚本进行输出
cat $0 | \tr -d ‘\n\t’ |tr -s ” \
| sed ‘s:/\*.*\*/::g’ \
|sed ‘s/\?\([{}();:;\])\?/\1/g’
得到了输出
我们进行编写解压缩的脚本
cat obfuscated.txt | sed ‘s/;/;\n/g; s/{/{\n\n/g; s/}/\n\n}/g’
在上面的命令中
s/;/;\n 将;替换为\n;
s/{/{\n\n/g 将 { 替换为{\n\n
s/}/\n\n}/g 将} 替换为 \n\n}