在线压缩、格式化和混淆 JavaScript 代码。纯浏览器端处理,不上传服务器。
这是一个跑在浏览器里的 JavaScript 压缩工具,把 .js 文件里的注释、缩进、换行、多余空格全部删掉,还能把局部变量名换成 a、b、c 这种短名字,顺手做代码混淆。比如你写完一个 48KB 的 utils.js,里面注释和缩进占了 11KB,丢进来压缩后大概剩 19KB,gzip 后从 13KB 降到 5KB 左右,首屏加载能少等几十毫秒。上线前压一版、排查线上问题时把压缩代码格式化回可读状态、把不想让人一眼看懂的逻辑做轻度混淆,这三种情况用它最合适。所有解析和改写都在你自己的浏览器里跑,代码不会发到任何服务器。
| 对比维度 | 本工具 | 手工/替代做法 |
|---|---|---|
| 处理 48KB 文件耗时 | 约 0.3-0.8 秒 | 手工删注释缩进约 20-40 分钟 |
| 体积缩减 | 典型 40%-65% | 手工通常只能省 10%-20% |
| 变量名缩短 | 支持,局部变量压到 1-2 字符 | 手工改名易漏改、易出错 |
| 环境依赖 | 浏览器打开即用,无需 Node | 需装 Node + terser/uglify-js |
| 隐私 | 代码不出本机,无网络请求 | 在线网站可能上传源码到服务端 |
能,前提是源码本身没有依赖函数名、变量名的字符串反射。压缩只做词法层面的删除和重命名,不改语义。但如果你写了 eval("foo()") 或 obj["myVar"] 这种按名字取值的写法,重命名后就会找不到,此时关掉「混淆变量名」即可。建议压缩后跑一遍单元测试再上线。
浏览器端解析受内存限制,实测 2MB 以内的单文件流畅,5MB 左右会卡 3-8 秒,超过 10MB 建议改用本地构建工具。压缩率方面,含大量注释和缩进的业务代码通常省 40%-65%,已经压过的第三方库再压只能省 3%-8%,意义不大。
压缩只删空白和注释、缩短局部变量名,输出仍可读;混淆会进一步把函数名、对象属性名替换成 _0x1a2b 这类无意义标识,并可能打乱控制流。混淆后体积可能反而变大 5%-15%,且调试困难。安全等级上,混淆只是提高阅读成本,不是加密,别拿它保护密钥。
默认删除所有注释。如果你在源码里用 /*! ... */ 或 //! 开头写版权声明,勾选「保留感叹号注释」后这些会被原样留下,其余注释照删。这是遵循 UglifyJS 的惯例,jQuery、Lodash 等库的 license 头都这么写。
把压缩代码粘回工具,点「格式化」,缩进设为 2 空格,它会按语法树重新排版,变量名不会还原但结构清晰可读。配合浏览器 DevTools 的 Sources 面板加断点即可。注意格式化后的行号和压缩版对不上,定位线上报错时以 sourcemap 为准。
不会。整个解析、压缩、格式化流程由页面加载的 JS 引擎在你本机执行,没有 XHR 上传,断网也能用。你可以打开 DevTools 的 Network 面板,点「开始处理」后不会出现任何请求。关掉页面数据即消失,不留存。
适用于 ES2015+ 语法的常规脚本,含动态 import、装饰器等实验特性时可能解析失败,会给出报错行号。压缩不改变代码逻辑,但依赖字符串反射的代码需关闭变量重命名。体积数字按 UTF-8 字节统计,与 gzip 后大小不同。全部计算在浏览器本地完成,代码不上传、不存储,关闭页面即清除。