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}

发表评论

邮箱地址不会被公开。 必填项已用*标注