[英]How to use google closure compiler to compress code accessible from outside script
我正在尝试将网站中启动时加载的所有源代码编译到一个文件中。 使用$.getScript
加载了一些代码,因此我需要能够保留对jQuery和其他一些功能的访问权限。 以下是我的工作。 我究竟做错了什么?
我已经阅读了以下Google教程: 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
我是在做错什么,还是Google闭包编译器无法提供此功能? 我不介意使用其他的压缩程序,只要可以使用shell_exec
从php运行它即可
作为ADVANCED编译中的源代码包含的任何脚本,必须与编译器的ADVANCED模式完全兼容。 jQuery不是。
也没有简单的方法使其兼容。 它违反了编译器对ADVANCED模式所做的太多假设 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.