JS 压缩
保守模式压缩 JavaScript:删注释、去缩进空行,字符串与正则逐字保留;不改名不重排,压缩完照样能跑。
/*! 与含 @license / @preserve 的注释会保留。>_ 使用指南 · GUIDE
保守模式压缩 JavaScript:删除注释与多余空白、去掉缩进与空行,体积立减。关键设计是「不改语义」——字符串与正则逐字保留、不做变量改名、不做语句重排,压缩完的代码行为与原文完全一致,粘贴回项目照样能跑。
适合场景:给客户交付的单页脚本减体积、临时压缩一段工具脚本、看懂压缩前的老代码先美化再看(反向用它不如专业美化器)。压缩在浏览器本地完成,源码零上传。
>_ 常见问题 · FAQ
Q1 · 压缩和混淆有什么区别?
压缩(minify)只做等价变换:删空白、删注释,目的是减小体积,可逆性强、语义不变;混淆(obfuscate)故意改变代码形态:变量改名、字符串加密、流程打乱,目的是增加逆向难度,体积反而可能变大。本工具做的是保守压缩,不做混淆。
Q2 · 为什么不做变量改名?那样不是压得更小吗?
变量改名(如把 userName 压成 a)收益大但风险也大:需要完整的语法分析,处理不当会破坏作用域、eval 动态引用、导出符号。本工具定位「保守可靠」——任何输入都能安全处理,绝不输出会变的代码。追求极致压缩请上构建工具链(Terser/esbuild),它们有完整解析器。
Q3 · 压缩后的代码怎么验证没被改坏?
保守模式的保证是「只删不改」,但稳妥流程仍是:① 压缩前后文件大小对比是否符合预期(通常减 20–40%);② 关键功能跑一遍冒烟测试;③ 有单元测试的先跑测试。压缩是构建发布的常规环节,验证成本很低。
Q4 · 字符串里的空格和注释会被删掉吗?
不会。字符串与正则字面量逐字保留——"hello world" 里的空格、// 出现在字符串内也不会被误当注释删掉。这是无解析压缩最容易翻车的地方,本工具做了词法级处理来保证。
Q5 · 正式项目应该用什么方式压缩 JS?
构建工具链是标准答案:esbuild(快、开箱即用)、Terser(深度优化)、Vite/Webpack 内置方案。它们做语法级压缩(变量改名、死代码消除、常量折叠),压缩率远超保守模式。本工具的价值在无构建场景:单文件脚本、快速手工处理、临时需求。