【发布时间】:2016-09-08 13:01:09
【问题描述】:
我正在尝试将我网站中在启动时加载的所有源代码编译到一个文件中。一些代码是使用$.getScript 加载的,所以我需要能够访问 jQuery 和其他一些函数。下面是我所做的。我做错了什么?
我已经阅读了谷歌教程:https://developers.google.com/closure/compiler/docs/api-tutorial3
为了测试它,我尝试压缩 jquery 3.1.0 删除除 show 和 hide 之外的所有内容,因此我将以下内容附加到末尾。
window['jQuery'] = window['$'] = jQuery;
jQuery.prototype['hide'] = jQuery.prototype.hide;
jQuery.prototype['show'] = jQuery.prototype.show;
然后我编译使用
java -jar compiler.jar --js_output_file all.js --compilation_level ADVANCED --create_source_map all.map --js _common/jquery/js/jquery-3.1.0.js
并将//# sourceMappingURL=/all.map 添加到输出文件的末尾。
为了测试我创建了一个简单的网页
<html>
<head>
<script src="/all.js"></script>
</head>
<body>
<div id="a1" onclick="$.hide('#a1');">a1</div>
<div id="a2" onclick="$.hide('#a2');">a2</div>
<div id="a3" onclick="$.hide('#a3');">a3</div>
<div id="a4" onclick="$.hide('#a4');">a4</div>
</body>
</html>
当我运行它时,我在控制台中收到以下错误。
jquery-3.1.0.js:7441 Uncaught TypeError: Cannot read property 'source' of undefined
jquery-3.1.0.js:3853 Uncaught TypeError: Za.ga is not a function
test.html:8 Uncaught ReferenceError: $ is not definedonclick @ test.html:6
我做错了什么还是超出了谷歌闭包编译器的能力。只要我可以使用shell_exec从php运行它,我不介意使用不同的缩小器@
【问题讨论】:
-
据我所知,jQuery 没有为闭包编译器进行内部注释,所以它不会这么简单。为什么不只替换您需要的一点点 jQuery?
-
这只是一个例子。我希望用它附加几个我自己的脚本。只要我使用基本压缩,编译器就可以工作,但如果能进行高级工作会很好
-
对于 jQuery 本身我希望我知道如何导出所有内容。这是我自己的代码,我希望仅限于几个函数。
-
How to make Jquery work with google closure compiler 和其他几个可能的重复项 - 谷歌搜索“带有 jquery 的闭包编译器”。
-
如果你想保留所有的 jQuery,那么你就不会用应用程序的其余部分来编译它。对于您自己的代码,read through 对其进行注释以进行高级编译。
标签: javascript jquery google-closure-compiler