你用什么来最小化和压缩 JavaScript 库?

IT技术 javascript compression minimize jscompress
2021-02-17 00:31:26

你用什么来最小化和压缩 JavaScript 库?

6个回答

我已经使用YUI Compressor很长时间了并且没有遇到任何问题,但最近开始使用Google Closure Compiler并取得了一些成功。到目前为止我对它的印象:

  • 在减少文件大小方面,它通常优于 YUI Compressor。简单模式下少量,高级模式下大量。
  • 迄今为止,简单模式与 YUI Compressor 一样可靠。我喂过的任何东西都没有显示出任何问题。
  • 高级“编译”模式对于某些脚本来说非常有用,但是脚本大小的显着减小是以对代码进行大量干预为代价的,而这些代码很有可能会破坏它。有一些方法可以处理其中一些问题,了解它在做什么可以大大避免出现问题,但我通常会避免使用这种模式。

我已经转而在简单的“编译”模式下使用 Google Closure Compiler,因为它总体上略胜过 YUI Compressor。我使用它的次数比使用 YUI Compressor 少得多,但从目前我看到的情况来看,我会推荐它。

我还没有尝试但听起来很有希望的另一个Mihai Bazon 的 UglifyJS

Google Closure Compiler 是我绝对推荐的一款。像你一样 - 简单模式刚刚奏效......完全没有问题。
2021-05-02 00:31:26

我使用YUI 压缩器似乎可以很好地完成工作!

如果您愿意,也可以添加指向此在线版本的链接,有时我只有 1 个文件需要快速转换。refresh-sf.com/yui
2021-04-20 00:31:26
不过,YUIcompressor 有一些不好的副作用。它附带了一个损坏的 Rhino 版本,它破坏了 Rhino 的任何服务器端 javascript。
2021-05-03 00:31:26
根据我的经验,YUI Compressor 是最安全但最激进的压缩器。
2021-05-08 00:31:26

你在这里有很多可能性:

根据我的个人经验,我建议您使用 Dojo SDK 构建自定义构建,然后您可以将其配置为使用他们常用的 ShrinkSafe 编译器或 Google Closure,它们现在也支持

就压缩而言,我认为 Google Closure 是迄今为止对我来说效果最好的一个,但是我通常对 ShrinkSafe 感到满意,而且它有点老而且更健壮,而 Closure Compiler 看起来有点像块上的新孩子(例如,您的利益相关者可能不太喜欢)。

不过,有些人只对 YUI Compressor 发誓。我个人不能真正保证它。

现在,如果您的问题是压缩而不仅仅是您自己的 JavaScript 代码,它显然会变得更加复杂,因为您将需要大多数这些工具来导出不应重命名或剥离的符号。大多数体面的压缩器会删除他们认为未使用的功能 - 通常是在库中的情况,如果没有绑定到项目,显然 - 并更改名称以使其更短并使用更少的字符 - 这也是一个问题,因为您显然想要一个公共API 不可篡改。

您也可以找到有关此主题的其他主题,并在工具的支持文档中找到信息。您可能还想看看JSBuilder2,它是用于 ExtJS(使用 YUI 压缩器)的 Dojo 构建工具的某种挂件(因此,使用 ShrinkSafe 或 Closure Compiler)。

(抱歉,作为一名 SO 新用户,我无法添加多个链接,因此无法直接链接到工具。)

编辑:关于一些答案中表达的担忧,即压缩可能会引入错误,并且由于代码没有被破坏,它使调试更容易:是的,这是一个有效的担忧。然而:

  • 如果您使用压缩器,即使启用了 gzip 压缩,您也会在带宽方面获得非常显着的改善(并且您可以通过使压缩器的生活更轻松来学习利用 gzip 压缩
  • 您应该在调试和生产模式下品尝您的代码,以确保行为相同。我的意思是,这也是你工作的一部分......
  • 其中一些压缩器已经存在一段时间了,不会真正将错误引入您的代码中。他们真的只是重新组织事物并替换字符串,真的。
  • 一些压缩器(例如 dojo 构建系统)带有选项,允许您生成压缩和未压缩的输出,以便您可以启用不同的调试和生产模式,例如使用查询参数。

我根本没有最小化 JavaScript:gzip 压缩对我来说已经足够了,并且还有一个额外的好处,即错误消息仍然有用。

当然,但它仍然比单独的 gzip 提供了一些额外的好处。只要确保使用缩小版本进行所有测试即可。
2021-04-20 00:31:26
+1 最小化更改代码并可能引入错误。
2021-04-29 00:31:26
那些具有防病毒保护功能或出于其他原因阻止 enableGzip 的用户呢?
2021-05-01 00:31:26
当然,当我们查看 jquery 24kb 压缩和 155kb 未压缩等内容时,加载文件的速度提高了五倍,这是一个非常棒的比率。当我 gzip 下载未压缩的文件时,我们得到一个 48kb 的文件,当我下载缩小的 gzip 时,它仍然是 24kb(显然)。在我们说它并不重要之前,我们应该考虑文件的大小以及它对速度的要求。对于 jQuery 来说,它是一个非常注重速度的相对较大的库,即使 gzip 只有两倍大,让它尽可能小也很重要。
2021-05-07 00:31:26

我也使用 YUI Compressor。我有一个这样的蚂蚁任务,我在我的项目中使用:

<!--
YUI Compressor tasks 
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
           value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>

<target name="js.compress">
    <!-- Create min directory under js direcrtory if it doesnt exist -->
    <mkdir dir="${js-directory}/min" />

    <apply verbose="true" executable="java" parallel="false" failonerror="true">
        <fileset dir="${js-directory}" includes="*.js"/>
        <arg line="-jar"/>
        <arg path="${yuicompressor.jar}"/>
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
        <targetfile/>
    </apply>
</target>