2011-11-14 19 views
2

這是一個簡化的示例,但我正在研究輸出javascript的代碼翻譯器。由於解析完成的方式,我必須分段輸出翻譯。即我結束了一個JavaScript文件,該文件類似於以下,但很多更長的時間:JavaScript優化:什麼工具可以壓縮順序字符串連接?

function coolfunc() { 
    var result = ""; 
    greet = function(user,town) { 
     var output = ''; 
     output += 'Welcome ' + user + '!'; 
     output += 'How is the weather in ' + town + '?'; 
     return output; 
    } 
    goobye = function(user,town) { 
     var output = ''; 
     output += 'Farewell ' + user + '!'; 
     output += 'Enjoy the weather in ' + town + '!'; 
     return output; 
    } 
    result += "Some output 1"; 
    result += "Some output 2"; 
    result += greet("Larry","Cool town"); 
    result += goobye("Larry","Cool town"); 
    return result; 
} 

是否有任何處理器後,我可以用它來凝聚到上述情況類似如下:

function coolfunc() { 
    greet = function(user,town) { 
     var output = 'Welcome ' + user + '!'+'How is the weather in ' + town + '?'; 
     return output; 
    } 
    goobye = function(user,town) { 
     var output = 'Farewell ' + user + '!'+'Enjoy the weather in ' + town + '!'; 
     return output; 
    } 
    var result = "Some output 1"+"Some output 2"+greet("Larry","Cool town")+goobye("Larry","Cool town"); 
    return result; 
} 

如果它可以結合相鄰的靜態字符串連接,這將是肉汁。

我認爲yuicompressor或封閉編譯器會這樣做,但據我所知他們不這樣做。


編輯:

評論到目前爲止似乎在告訴我這樣做的翻譯。我不認爲這是最好的選擇,因爲它會使閱讀翻譯變得非常困難......類似於爲什麼人們編寫冗長的代碼然後將其縮小到生產中。

+1

你擔心性能或帶寬?因爲這在性能方面確實不是什麼大問題... – Matchu

+2

嘗試使用模板引擎;它應該更好地分離代碼和標記/消息,並且可能會稍微更高性能。 – davin

+0

@Matchu:帶寬。這不是什麼大問題,但保留所有不必要的變量名似乎很愚蠢。 – user319862

回答

0

如果有人遇到這種情況,看起來像關閉編譯器可以處理這個問題作爲修訂的1576(http://code.google.com/p/closure-compiler/source/detail?r=1576)