2

有沒有人需要共享dojo和dgrid的extern定義文件?關閉Dojo工具包和dgrid的編譯器externs

我想包括那些在我的clojurescript項目,甚至使用'簡單'clsure編譯器優化選項。

此刻我發現dgrid和dojo toolkit與Clojurescript編譯過程不兼容。 換句話說,它是不可能 一)包括道場或dgrid:外國庫選項,然後充分利用 關閉編譯器創建使用封閉編譯一個「精縮版本:先進的,甚至:簡單的選擇

b )也不可能將dojo或dgrid庫包含在內:extern選項 ,因爲那個人必須創建一個extern定義列表(不在dojo/dgrid發行版中)。

我很確定選項(a)是死路,因爲它的工作原理dojo團隊需要對工具包進行更改,並且可能是低優先級。我已閱讀Stephen Chung的50多頁關於如何修改dojo與google-closure一起工作的文檔,但這遠遠超出了我爲Dojo 1.9和更高版本重新實現的能力。

我想(b)可能最終會工作,但爲此我需要找到extern庫。 希望有人爲dojo 1.9和最新的dgrid做好了準備。

此前張貼在這裏,我已經檢查了關閉編譯器目前可用的「實習醫生」的資料庫,並道場是不是有 https://code.google.com/p/closure-compiler/source/browse/#git%2Fcontrib%2Fexterns

我也發現了實習醫生的在線提取 http://www.dotnetwise.com/Code/Externs/index.html

http://www.dotkam.com/2013/07/15/clojurescript-use-any-javascript-library/

但是,我什至不知道什麼dgrid/dojo文件來做到這一點。

因此,看看是否有人已經創建了這些externs。

回答

0

您可以使用自己的源文件作爲externs定義。顯然,這意味着編譯器無法優化庫,但如果按照您的說法,您並不需要它,這是一個很好的工作選項。

0

我沒有在ClojureScript中使用dojo/dgrid的經驗,但我已經在ClojureScript中使用了幾個JavaScript庫。

在ClojureScript中使用複雜庫的最好方法就是不要觸摸它們,也不要在它們上運行Google Closure。 (你稱之爲(b))。 因此,您只需要在externs.js中輸入很少的externs定義。僅適用於您從ClojureScript代碼訪問的特定變量/函數。你不需要externs.js他們聲明的所有東西。 Google Closure編譯器只能運行在你的代碼上,而不是外部的js庫。 只有當你: 1.你需要從js代碼中調用你的cljs函數(以避免調用你的js中沒有的函數名) 2.從你的cljs代碼調用js庫函數(以避免在函數調用中刪除函數名稱)。

因此,沒有需要完成的工作,您需要準確地爲您所做的特定調用放置一個小extern文件。