为什么要进行Js或者Html压缩?Js代码压缩基本原理:代码框里粘 JS 或 HTML,三个动作都就地改写同一个框:「格式化」按 #tabsize 下拉选的缩进重排;「普通压缩」去空白与换行;「加密压缩」再叠加一层 Dean Edwards 打包混淆。
全部在浏览器本地跑(jsbeautifier + packer),不上传代码。
| 按钮 / 选项 | 结果 |
|---|---|
| 格式化缩进 4 空格、补分号 | function uniq(a) {
return a.filter(function(x, i) {
return a.indexOf(x) === i;
});
} |
| 普通压缩去空白,逻辑不变 | function uniq(a){return a.filter(function(x,i){return a.indexOf(x)===i})} |
| 加密压缩变成 eval(function(p,a,c,k,e,r)…) 打包串 | eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[12]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1 uniq(a){2 a.filter(1(x,i){2 a.indexOf(x)===i})}',[],3,'|function|return'.split('|'),0,{})) |
「加密压缩」是 Dean Edwards 的 packer:把变量名换成单字符并打包成 eval(function(p,a,c,k,e,r)…)。它只是让代码变短、变难读,不提供任何安全性——把字符串再执行一次就还原了,别当代码保护用。
真要给公网用的 JS 做体积优化,请走构建工具(terser/esbuild)并配合 gzip/brotli,在线打包只是应急。