最好的 JavaScript 压缩器 [关闭]
-
09-06-2019 - |
题
最好的 JavaScript 压缩器是什么?我正在寻找一个工具:
- 易于使用
- 具有高压缩率
- 产生可靠的最终结果(不会弄乱代码)
解决方案
我最近发布了 UglifyJS, ,一个用 JavaScript 编写的 JavaScript 压缩器(运行在 NodeJS Node.js 平台,但可以轻松修改它以在任何 JavaScript 引擎上运行,因为它不需要任何 Node.js
内部结构)。比两者都快很多 YUI压缩器 和 谷歌关闭, ,它的压缩效果比 尤伊 在我测试过的所有脚本上,它比 Closure 更安全(知道处理“eval”或“with”)。
除了删除空格之外,UglifyJS 还执行以下操作:
- 更改局部变量名称(通常为单个字符)
- 连接连续的 var 声明
- 避免插入任何不需要的括号、括号和分号
- 优化 IF(当检测到不需要时删除“else”,将 IF 转换为 &&、|| 或 ?/:可能的话,操作员等)。
- 转变
foo["bar"]
进入foo.bar
在可能的情况 - 如果可能的话,从对象文字中的键中删除引号
- 解析简单的表达式,这会导致代码更小(1+3*4 ==> 13)
附:哦,它还可以“美容”。;-)
其他提示
几年后再看这个问题, UglifyJS, ,似乎是目前最好的选择。
如下所述,它在 NodeJS 平台上运行,但可以轻松修改以在任何 JavaScript 引擎上运行。
---下面是旧答案---
谷歌发布 闭包编译器 到目前为止,这似乎生成了最小的文件 这里 和 这里
在此之前的各种选项 如下
基本上 包装机 在初始压缩方面做得更好,但是如果您要在在线发送之前对文件进行 gzip(您应该这样做) YUI压缩器 获得最小的最终尺寸。
顺便说一句,测试是在 jQuery 代码上完成的。
- 原始 jQuery 库 62,885 字节,gzip 后 19,758 字节
- jQuery 使用 JSMin 压缩为 36,391 字节,gzip 后压缩为 11,541 字节
- jQuery 使用 Packer 缩小为 21,557 字节,gzip 后缩小为 11,119 字节
- 使用 YUI 压缩器压缩 jQuery 31,822 字节,gzip 后压缩 10,818 字节
我用 收缩安全 来自 Dojo 项目 - 它很特殊,因为它实际上使用了 JavaScript 解释器(犀牛)来处理在代码中查找符号并理解它们的范围等。这有助于确保代码在从另一端出来时能够正常工作,而不是许多使用正则表达式执行相同操作的压缩工具(这不那么可靠)。
我实际上有一个 MSBuild 任务 网络部署项目 在我当前的 Visual Studio 解决方案中,该解决方案运行一个脚本,该脚本又在我们部署之前通过 ShrinkSafe 运行解决方案的所有 JS 文件,并且运行得很好。
编辑: 顺便说一句,“最佳”是有争议的,因为“最佳”的标准会根据项目的需求而变化。就我个人而言,我认为 ShrinkSafe 是一个很好的平衡;对于一些认为最小尺寸==最好的人来说,这是不够的。
编辑: 值得注意的是,YUI压缩器也使用Rhino。
尝试 JS敏, ,获得了 C#、Java、C 和其他端口并且也随时可用。
如果您使用 Packer,只需使用“收缩变量”选项并对生成的代码进行 gzip 压缩即可。base62 选项仅适用于您的服务器无法发送 gzip 压缩文件的情况。带有“shrink vars”的 Packer 可以更好地压缩 YUI,但如果您在某处跳过了分号,则可能会引入错误。
base62 基本上是一个穷人的 gzip,这就是为什么 gzip 压缩 base62 代码比 gzip 压缩收缩 var 代码提供更大的文件。
JS敏 是另一个。
在搜索银弹时,发现了这个问题。对于 Ruby on Rails http://github.com/sstephenson/sprockets
这是源代码 一个 HttpHandler 可以做到这一点,也许它会帮助你
香蕉脚本网站 曾经给我最好的结果。
KJS压缩
http://opensource.seznam.cz/KJScompress/index.html
KJSCompress/CSSKompress设置了两个应用程序(KJScompress A CSSCompress),以删除包含JavaScript和CSS的文件中的不重要的Whitespaces和注释。两者都是GNU/Linux操作系统的命令行应用程序。
Js粉碎 是一个很好的压缩器,可以在缩小后使用。
我用 jscompressor.com 作为 Chrome 应用程序。