簡體   English   中英

將多個JavaScript文件壓縮成單獨的文件

[英]Compressing multiple JavaScript files into separate files

我知道有關javascript壓縮的問題已被問過多次,但找不到任何答案。

我有一個包含通用腳本(jQuery和其他一些腳本)和特定於頁面的腳本的項目。 jQuery Mobile允許您通過一次下載<head>所有內容來緩存會話中的常用腳本。 只要將<script>放在<div data-role="page"> ,只要加載頁面,就會拉特定的<script>

我發現這很棒,因為它可以優化瀏覽我的應用程序頁面時下載的腳本,並確保瀏覽器隨時具有最少的JavaScript。

但是,由於無法合並的各個文件之間存在依賴關系,因此縮小變得非常糟糕。

到目前為止,我發現了兩種不太適合我的解決方案:

  • 使用簡單的縮小腳本,該腳本不會更改函數和變量名:與高級版本相比,文件大小增加了一倍
  • 將所有腳本分組並壓縮,然后將其放在<head> :您將失去只能下載所需腳本的能力,並且瀏覽器已加載了不必要的功能

(我顯然不包括手動更改功能名稱;)

我正在尋找一種可以做以下事情之一的壓縮機:

  • 將所有文件壓縮在一起,但將它們輸出到單獨的文件中以保持模塊化
  • 如果不可能的話,請以高級方式獨立壓縮文件,但要使用標簽,這些標簽可能會阻止壓縮程序將鏈接重命名為外部函數或變量(例如jQuery的變量)

是否存在?

熟悉了所有這些內容之后,Google Closure Compiler可以做到這一點(還有更多)。

方法是為以下項定義外部元素:

  • 您正在使用的第三方庫(jQuery,jQuery Mobile ...)。 您可以在其中找到其中一些
  • 您分別加載的自制腳本

顯然,如果壓縮單獨加載的自制腳本,則應使用以下技術( 在Closure Compiler文檔中詳細介紹 )將要使用的變量導出到其他位置:

/**
 * A function you want to be able to call from elsewhere after compressing
 * @param {string} a
 */
function exportedFunction(a) {alert(a);}

window['exportedFunction'] = exportedFunction;

然后,您可以批量或分別壓縮所需的文件。 它是如此強大,我無法相信我以前從未使用過它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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