如何使用谷歌闭包编译器压缩代码可从外部脚本访问
How to use google closure compiler to compress code accessible from outside script
我试图在我的网站上编译所有的源代码,在启动时加载成一个文件。一些代码是使用$.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
是我做错了什么,还是这超出了谷歌闭包编译器的能力。只要能在php中使用shell_exec
在高级编译中作为源代码包含的任何脚本都必须与编译器的高级模式完全兼容。jQuery不是。
也没有简单的方法使它兼容。它违反了编译器对高级模式的许多假设。
相关文章:
- 从外部 js 脚本创建元素并插入到 html 中
- Kinetic JS无法从外部脚本文件中工作
- 动画滚动脚本可防止从外部链接访问本地锚点位置
- 脚本未从外部文件执行
- 如何将@exclude规则从外部文件添加到用户脚本
- 如何在 Django 中使用 ajax 调用从外部脚本中提取数据
- 使用 jQuery 从外部页面中删除脚本函数
- Google Apps 脚本从外部 API 获取响应
- 加载外部脚本时出现问题,当我从视图中加载该脚本时,该脚本有效
- 从外部文件加载html而不丢失<脚本>标签
- CKEditor:从外部脚本访问insertHtml()方法
- Jquery从外部脚本加载元素
- 从外部脚本与angularjs模型进行通信
- Angular 2+SignalR-从外部脚本访问Angular内部
- 在“运行时”从外部脚本加载React JS组件
- 如何从外部脚本JavaScript回调返回
- 从外部脚本到GWT父脚本的postMessage
- 如何使用谷歌闭包编译器压缩代码可从外部脚本访问
- 从外部脚本中的函数捕获错误
- 从外部脚本生成的元素中删除DOM元素