正确识别正则表达式、模板字符串、科学计数法;引号内的内容原样保留。
所有处理都在你的浏览器本地完成,代码不会上传。压缩会移除注释与多余空白,但会保留必要换行,避免 return 换行这类自动分号(ASI)陷阱。
处理结果将显示在这里。
JS 压缩最容易出错的地方是“分不清符号的身份”,下表列出本工具的处理方式。
| 易错点 | 风险 | 本工具的处理 |
|---|---|---|
| 除号 / 正则 | a / b 与 /\d+/g 都含 / | 依据前一个有效 token 判断:表达式中的是除号,return、= 之后的是正则起始 |
| ASI 自动分号 | return 后换行,合并行会改变返回值 | 压缩时保留必要换行,不把无分号的两行强行并成一行 |
| 自增自减 | i++ + 1 压成 i+++1 含义可能被误读 | 相邻的 + / - 之间保留一个空格 |
| 字符串 / 模板串 | 引号里的代码样子的文本被当成代码处理 | 单双引号、反引号 `${}` 作为整体 token,内部符号一律不动 |
| 数字 | 科学计数法 1e5、.86、0xFF 被切分 | 词法层完整识别进制前缀、指数部分与 BigInt 的 n 后缀 |
| 关键字与属性名 | obj.return 被误加空格 | 成员访问的点号紧贴属性名;只在真正的关键字两侧补空格 |
它是安全的空白/注释压缩器,不是完整的构建工具。
| 问题 | 说明 |
|---|---|
| 为什么不做变量名混淆 | 把 userName 改成 a 需要完整理解作用域、闭包、eval、with、全局引用与外部接口,误判一个就会让线上脚本报错。为了“零 bug”,本工具只做词法上 100% 安全的空白与注释压缩,不重命名任何标识符。 |
| 不做语法校验 | 工具只重排空白,不检查括号是否配对、变量是否声明。源码本身有语法错误时,压缩结果同样是错误代码。 |
| 美化保留原有换行 | 为避免破坏无分号写法,美化只规范缩进与间距、不随意合并或拆分你的逻辑行;想让长行自动折行请先手动分行。 |
| 注释会被删除 | 压缩模式移除 // 与 /* */ 注释以减小体积,请保留带注释的源文件;字符串内的“//”文本不受影响。 |
| 上线前请自测 | 压缩后建议在页面里完整跑一遍核心流程再发布,尤其是依赖正则、模板字符串与无分号风格的脚本。 |
⚠️ 本工具仅在浏览器本地对 JavaScript 文本做排版与压缩,不会上传、保存你粘贴的任何代码。
它只调整空白、换行与注释,不改变量名、不删代码、不做语法转译;为安全起见保留了防止 ASI 出错的必要换行,因此压缩率会略低于 Terser、esbuild 等会分析语法树的专业工具。
压缩结果请在你的页面中自行验证功能正常后再上线。
从别处复制来的脚本常常挤成一行或者缩进混乱;上线前又想删掉注释与空白、把体积压小。
这个工具同时解决这两件事:
它能做什么:
① 美化排版:按 { } 层级缩进、规范运算符与关键字间距,保留你原有的换行;
② 安全压缩:删除缩进、多余空白与注释,显著减小 JS 体积;
③ 正则识别:准确区分除号与正则字面量,不会把 /\d+/g 当成除法切坏;
④ ASI 保护:保留必要换行,return 换行、无分号风格不会因压缩而改变行为;
⑤ 字面量保护:单双引号字符串、模板字符串插值、科学计数法、小数、十六进制与 BigInt 都原样保留;
⑥ 压缩率统计:实时显示输入输出字符数与体积下降百分比。
需要注意:
· 它故意不做变量名混淆——那需要语法树级别的作用域分析,词法工具做了反而容易改坏代码;
· 全部处理在浏览器本地完成,刷新页面内容即消失。
处理流程:
① 词法切分:把 JS 扫描成换行、空白、注释、字符串、模板串(整体吞入 ${…})、正则(字符类 […] 内的斜杠不误判)、数字(含 0x/0o/0b、指数、n 后缀)、标识符与多字符运算符;
② 美化:保留源码每一处换行,按大括号深度重算缩进,规范运算符两侧、关键字之后、逗号之后的间距;
③ 压缩:删除空白与注释,标识符相邻、关键字两侧补必要空格,i++ + 1 这类相邻加减号保留空格,并在无分号语句之间保留换行防止 ASI;
④ 统计:统计注释数量、输入输出字符数并计算压缩率。
它不做:不改变量名/不混淆、不删死代码、不做 Babel/TypeScript 转译、不上传任何代码。
return 后换行会被自动补上分号、返回 undefined;一旦压缩时把这两行合并,函数的返回值就变了。工具只在有分号或大括号等明确分隔的地方合并,无分号的语句之间保留换行,用极小的体积代价换取语义安全。eval、with、跨文件全局变量等情况;纯词法压缩无法保证不出错,而脚本压缩最不能接受的就是“压完线上报错”。需要变量混淆请使用 Terser、esbuild 等构建工具,本工具专注于零风险的空白/注释压缩。/ 是除号还是正则开头:处在 =、return、( 等位置时按正则处理,并正确跳过字符类 [/] 与转义斜杠,/https?:\/\/.+\/[a-z]/gi 这类复杂正则也能整体保留。...、可选链 ?.、模板字符串等 ES2015+ 语法都能识别。注意工具不做语法降级,不会把 ES6 转成 ES5。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!