回答

6

您必須declare jQuery as an extern to the compiler ...但是我不確定是否有人制作了一個,there was an extern file for 1.3.2,但我還沒有看到任何1.4+版本。

編輯:this issue thread here has the community building a 1.4 version

+0

1.7.3pre的構建完成了CC-AO兼容性:https://groups.google.com/forum/?fromgroups=#!topic/jquery-bugs-team/2zb5qqKiubU – 2012-10-01 19:21:17

+1

新的jQuery外部文件(包括1.8)位於http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/ – 2013-01-28 05:50:25

+0

externs contrib鏈接現在是https://code.google.com/p/closure-編譯器/源/瀏覽/#git%2Fcontrib%2Fexterns – 2013-08-22 06:32:14

2

jQuery與高級模式下的Closure編譯器不兼容。我同意讓它兼容是一件非常好的事情,因爲它的方法鏈接語法非常容易爲原型虛擬化提供更高的執行速度。實際上,在流行的JavaScript庫(除了Closure Library之外)中,只有Dojo Toolkit與Closure Advanced模式兼容。

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

+2

您可以使用帶高級模式的Google Closure編譯器的jQuery。我在所有項目中都這樣工作。所有你需要的是一個爲jQuery方法創建的externs文件。 – Fatih 2012-05-20 12:19:45

+3

確實如此,但是您跳過了高級模式的許多優點 - 幾乎看起來像超級簡單模式。正確的重寫jQuery應該刪除甚至jQuery對象本身,並且虛擬化每個方法。 – 2012-05-21 01:59:52

11

使用關閉編譯高級模式使用jQuery時,必須使用jQuery的一個實習醫生文件。 Extern文件會告訴編譯器這些是保留的方法,並接受這些參數和參數數據類型應該是這樣的,所以不要以這種方式縮小方法名稱和檢查參數數據類型。

您可以獲取由Google Developers here創建的externs文件。這個文件爲jQuery-1.4.3生成。但目前可能會使用任何版本的jQuery。新添加的方法可能不包含在該文件中,因此您應該將其添加到externs文件中,語法和同義詞非常簡單。

你也可以通過使用額外的Compier標誌來說明externs文件的位置。語法應該是這樣的

--compiler_flags= "--externs=path/to/jquery.externs.js" 

您也可以使用this tool這是一個在線實習醫生提取的Closure庫。

相關問題