簡體   English   中英

如何使用Google Closure編譯器壓縮可從外部腳本訪問的代碼

[英]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來刪除除showhide所有內容,因此將以下內容附加到結束。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM