2

对于一些 javascript 包,我只能得到缩小/丑化的文件。我需要将它们与我的其他 javascript 文件结合起来,并使用 google 闭包编译器进行编译。

我的问题是:

是否最好将原始未缩小的javascript传递给闭包编译器,而不是丑陋的?(尤其是高级优化模式。)

由于许多 javascript 库本身提供缩小版本(如 jquery 和 angularjs),如果我将这些脚本包含在另一个缩小任务(uglify 或闭包编译)中,我是否需要担心。还是我应该将它们单独列出并仅将它们连接起来?

4

2 回答 2

2

如果微优化是你的事,你可能想看看几个缩小器,看看哪个最适合你的代码库。主要的有 UglifyJS、Google Closure Compiler 和 ESMangle。Uglify 网站上有一个很好的比较。通过几个缩小器运行代码可能看起来有点矫枉过正,但如果它产生更好的结果,那为什么不呢。:-)

缩小器不关心你是否传入已经被缩小的东西;作为一个例子,我在生产中使用了 r.js 优化器,它连接了我未缩小的源代码和缩小的 jQuery 之类的东西,然后丑化了整个东西。

您不需要真正担心重新压缩库,它所要做的就是在构建步骤上增加更多时间,因此如果花费的时间太长,那么您可以从压缩器中分离出库并简单地连接它们。

于 2013-10-30T09:17:09.140 回答
1

根据库的不同,有两种路径:

  1. 如果库提供了未压缩的源并且已知与它兼容,ADVANCED_OPTIMIZATIONS那么最好的选择是将其作为源文件传递。此选项从库源代码和您的源代码中消除死代码的好处。

  2. 如果该库仅提供缩小的源或已知与 不兼容ADVANCED_OPTIMIZATIONS,那么最好的选择是使用该库的 externs 编译您的代码。为了尽量减少请求的数量,您仍然应该将结果连接在一起。虽然您可以使用WHITESPACE_ONLY编译器的级别,但它可能不是最好的工具。

当然,将库与您的源相结合将最大限度地减少请求,但同时会抵消使用 CDN 托管库所带来的任何缓存优势。

于 2013-10-30T13:32:47.003 回答