首页 JS 压缩器

JS 压缩器

通过移除注释、空白和冗余字符来缩小 JavaScript——附带实时体积统计、复制和下载,100% 在浏览器中运行。

输入 JS

输出

原始
压缩后
节省

什么是 JavaScript 压缩?

JavaScript 压缩是在不改变运行时行为的前提下,从源代码中移除不必要字符的过程。压缩器会剥离注释、空白、换行和其他冗余字节,生成一个功能相同但体积显著更小的脚本。典型的压缩后 JS 文件比原始格式良好的源文件小 40–60%,在 gzip 之后更小。

由于压缩后的代码被 JavaScript 引擎以完全相同的方式解析和执行,应用程序的行为不会改变——只有文件体积、解析时间和传输时间得到改善。这使压缩成为一种安全、高影响的优化,每个生产网站都应加以应用。

为什么要压缩 JavaScript?

压缩 JavaScript 为生产网站带来具体的好处。更小的文件在网络中下载更快,这在移动连接和有限流量套餐的用户中尤为重要。浏览器能更快地解析脚本,缩短页面变为可交互前的等待时间。压缩后的文件与 gzip 和 Brotli 配合得更好,在传输层进一步放大节省效果。

对于拥有多个大型 JavaScript 包的网站,综合节省可能相当可观——每次页面加载可减少数百 KB 甚至数 MB。这有助于改善 Core Web Vitals 中的首次内容绘制、最大内容绘制和可交互时间等指标,搜索引擎将其作为排名信号。

压缩过程中会移除什么?

JavaScript 压缩器在保留脚本行为的同时,会移除几类无功能内容:

  • 块注释——/* ... */ 块会被完全剥离。
  • 行注释——// ... 到行尾的注释会被移除。
  • 空白——开头、结尾以及多个连续空格会被折叠或移除。
  • 换行——无意义的换行符和制表符会被移除。
  • 冗余分隔符——运算符和标点周围的空格在安全的情况下被移除。
  • 多余分号——闭合大括号前或文件末尾的最后一个分号可能被移除。

本转换器应用了这些转换的安全、保守集合。它不会重命名变量、混淆标识符或重写控制流,因此输出易于验证和调试。字符串、正则表达式和模板字面量都会被保留。

何时压缩 JavaScript

压缩应放在构建流水线的最后,应用于发布到生产的文件。典型工作流是:开发时编写整洁、注释充分的 JavaScript,然后在部署步骤中作为一部分运行压缩器。常见的压缩时机包括:

  • 生产构建。在发布前通过 Webpack、Vite、Rollup、esbuild 或其他打包器自动运行压缩。
  • 一次性快速优化。将手写脚本粘贴到本工具,为静态网站或嵌入获取更小的副本。
  • 审计第三方脚本。压缩以未压缩形式提供的供应商脚本,以减小其体积。
  • 书签和小代码片段。在粘贴到书签或共享代码片段库之前先压缩。

请始终将原始可读源作为真相来源——压缩后的版本是生成的产物,不应手工编辑。

压缩与传输压缩

JavaScript 压缩与 HTTP 压缩(gzip 或 Brotli)是互补的,而非可互换的。压缩从源文本中移除冗余字符,而传输压缩以更高效的方式编码传输的字节。两者结合可获得最小的传输体积:先压缩,再在响应上启用服务器端压缩。

即使在 gzip 之后,压缩文件通常也比未压缩文件小得多,因为压缩移除了传输压缩无法完全消除的模式(如注释和结构性空白)。为获得最佳效果,请在构建工具中启用压缩,并在 Web 服务器或 CDN 上启用 gzip/Brotli。

这个 JS 压缩器免费吗?

是的,完全免费,无需注册、除设备内存外没有任何限制,无需上传——一切在本地运行。

压缩会破坏我的代码吗?

不会。本工具仅移除对 JavaScript 引擎执行脚本没有影响的字符。运行时行为完全相同。字符串、正则表达式和模板字面量都会被保留。

它会重命名变量或混淆代码吗?

不会。本工具仅进行安全的空白和注释移除。它不会重命名标识符或重写控制流,因此输出保持可读、易于调试。

开发时应该压缩 JS 吗?

不建议——开发时保留可读 JS 以便调试。仅在构建生产版本时进行压缩。

我的脚本会被上传吗?

不会。所有处理均在本地进行,您的 JavaScript 永远不会离开浏览器。