编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 名词解释 / 代码压缩

代码压缩

代码压缩(minify)是指在不改变程序功能的前提下,删除源代码中对执行无用的字符,从而减小文件体积。被删掉的通常包括:空格、换行、缩进、注释,以及可选的分号简化等。对 JavaScript 这类语言,压缩工具还会把局部变量名 userName 缩短成 ab,进一步省字节。压缩后的代码语义完全等价,浏览器或解释器照常运行,只是人类难以阅读。

它的主要价值是减小传输体积、加快加载与解析速度,常用于前端上线构建环节。不同文件类型有各自的压缩规则:json-minify 去掉 JSON 里的空白与换行,压成单行;css-minify 会合并规则、去掉最后一个多余分号、把 #ffffff 简写为 #fff。要点是:压缩只做文本层面的精简,不加密、不打包、不改逻辑。

常见误区有两个。一是把「代码压缩」和「gzip/brotli 传输压缩」混为一谈——前者是文本级别精简,后者是 HTTP 传输时的二进制压缩,两者是不同层次,通常叠加使用。二是把 minify 当成混淆(obfuscation)或加密:压缩后的代码只是不好读,并没有被真正保护,逻辑仍可被还原分析。此外,压缩会破坏调试时的行号定位,生产环境一般配合 source map 使用。

常见问题

代码压缩和 gzip 压缩是一回事吗?
不是。代码压缩(minify)是在文本层面删除空白、注释、缩短变量名,产物仍是可读的代码文件;gzip/brotli 是 HTTP 传输时对字节流做的二进制压缩,浏览器接收后会自动解压。两者处于不同层次,实际部署中通常先 minify 再由服务器 gzip,效果叠加。
压缩后的代码还能还原成原来的样子吗?
能恢复到可运行、语义等价的代码,但拿不回原始的注释、缩进和有意义的变量名——这些信息在压缩时已被丢弃。想在生产环境保留调试能力,需要额外生成并保留 source map。
JSON 压缩主要去掉什么?会不会破坏数据?
主要去掉键值之间、数组元素之间的空格、换行和缩进,把整段 JSON 压成一行。它只动格式不动内容,键、值和结构都不变,因此不会破坏数据,解析结果与压缩前完全一致。

相关工具

相关名词