我目前正在使用包含在一大堆網站上的大型Javascript代碼庫(目前大約有150k左右)。隨着更多功能的增加,它的規模不斷擴大,所以我現在正在研究如何縮小尺寸。選擇編譯爲JS語言並將輸出大小作爲優先級
目前可用的選項之一是從純JavaScript切換到編譯到JS庫。這在開發過程中可能會有所幫助,因爲諸如基於類的OOP和編譯時類型檢查等功能將爲我們節省一些工作量。但是,重要的是,這種改變不會增加純粹在JS中工作的代碼庫的大小。我所研究的語言都沒有特別關注輸出尺寸。 Dart看起來像最好的工作,但編譯的輸出是可笑的大。 GWT引入了比解決問題更多的問題,並且輸出結果並不令人愉快。我自己並沒有嘗試Haxe,但有一位同事,他告訴我它的產量非常臃腫。 CoffeeScript似乎是目前最有希望的,因爲輸出是相當標準的Javascript,但它仍然產生比我們目前手寫的更大的JS文件(儘管我只嘗試移植我們的代碼庫的小片段)。
是否有一種編譯生成JS語言,可以生成簡潔的JavaScript並很好地縮小(特別是使用Google Closure),同時使開發過程更簡單?或者,我們是否更擅長用手寫JS?
如果手寫的JS是要走的路,那麼是否有任何工具或技術可以在輸出尺寸上產生特別大的差異?谷歌的封閉庫看起來很有趣,因爲它們和我們自己的代碼在功能上有很多重疊,但好處必須很大,因爲切換到這個過程需要很多工作。
如果您知道一次只能使用代碼段的一部分,並且可以將代碼庫正確地分隔爲必要和可選的代碼,那麼使用PHP之類的代碼可以更好地只連接需要提供的部分。 QueryStrings應該適用於選擇要包含的部分。 – TheZ 2012-08-10 18:26:16
創建CommonJS/AMD模塊化普通JavaScript文件,然後http://requirejs.org進行優化和打包。 – devundef 2012-08-10 18:29:27
我們已經在做這些事情了,一些可選的代碼片段以插件的形式加載(儘管我們使用自己的插件管理器)。不幸的是,我們無法動態構建整個事物,因爲它是第三方網站上的圖書館,而且我們通常不能很好地控制它所服務的服務器端環境。我目前正在使用的150k腳本實際上只是我們圖書館的「核心」組件,因此幾乎所有內容中的幾乎所有內容都將被需要。 – Jim 2012-08-10 18:33:25