5

我已经设法创建了一个使用 jQuery 和 jQuery UI 的小型 js 应用程序,使用 google 的具有高级优化的闭包编译器。只是为了清楚起见:我没有编译 jQuery 本身,只是我使用 jquery 的应用程序。我想知道是否有人可以确认这个想法也适用于更大更复杂的应用程序。

程序如下:

0.- 您有一个调用 jquery-1.4.3.min.js、test1.js 和 test2.js 的 html 文件

1.- 编译您的应用程序并导出属性映射文件

java -jar closure-compiler.jar \
       --compilation_level ADVANCED_OPTIMIZATIONS \
       --js test1.js --js test2.js \
       --property_map_output_file prop.out > min.js

属性映射是一个键/值文件,包含编译前后的属性名称:

aprop:a
html:b
each:c

2.- 将 prop.out 复制到 prop.in 并对其进行编辑,以便将 jQuery 属性(函数)替换为相同的名称(这可以使用列表 jquery 的函数轻松自动化):

aprop:a
html:html
each:each

3.- 使用 prop in 作为属性映射输入重新编译

java -jar closure-compiler.jar \
       --compilation_level ADVANCED_OPTIMIZATIONS \
       --js test1.js --js test2.js \
       --property_map_input_file prop.in > min.js

4.- 现在在您的 html 中,包括 min.js 和 jquery-1.4.3.min.js。应用程序应该可以正常运行,但您的代码应该更快更小。

这将缩小您的代码,而不是 jquery 的。

正如我所说,我已经在一个小应用程序中对此进行了测试。如果有人有一个更大更复杂的应用程序,很高兴知道它可以工作。

谢谢,

黑格

4

1 回答 1

3

您是否考虑过使用externs。据我所知,这是防止 jQuery 方法在您的代码中被缩短的方法。jQuery的外部作为对闭包项目的贡献而存在。

对于 jQuery UI,你可能想试试这个。这是我曾经遇到过但自己没有测试过的东西

顺便说一句:如果你有兴趣,有一个非常方便的闭包构建工具:Plovr。我一直在使用它,并让外部人员使用它。

于 2010-12-06T21:24:45.763 回答