是否有人必须共享dojo和dgrid的外部定义文件?
我正在尝试将它们包含在我的clojurescript项目中,甚至使用“简单”的clsure编译器优化选项。
目前,我发现dgrid和dojo工具包与Clojurescript编译过程不兼容。换句话说,不可能a)包含dojo或dgrid和:foreign-libs选项,然后利用闭包编译器创建一个'minified release using closure编译器:advanced or even :simple选项
b)也不可能包含带有:extern选项的dojo或dgrid库,因为为此必须创建一个外部定义列表(这在dojo/dgrid版本中不存在)。
我非常确定选项(A)是一个死胡同,因为要让它工作,dojo团队需要对工具包进行更改,而且它可能是低优先级的。我已经阅读了Stephen Chung的50+ pages文档,该文档介绍了如何修改dojo以使用google-closure,但在Dojo1.9和更高版本上重新实现它远远超出了我的能力范围。
我在想(B)最终可能会起作用,但为此我需要找到externs库。希望有人已经为dojo 1.9和最新的dgrid做到了这一点。
在这里发帖之前,我已经检查了闭包编译器当前可用的'externs‘的存储库,dojo不在那里https://code.google.com/p/closure-compiler/source/browse/#git%2Fcontrib%2Fexterns
我还找到了一个externs http://www.dotnetwise.com/Code/Externs/index.html的在线提取器
和http://www.dotkam.com/2013/07/15/clojurescript-use-any-javascript-library/
但是,我甚至不确定要为哪些dgrid/dojo文件执行此操作。
因此,看看是否有人已经创建了这些externs。
发布于 2014-01-20 02:33:26
您可以使用它们自己的源文件作为externs定义。显然,这意味着编译器无法优化库,但如果如您所说,您不需要这样做,那么这是一个很好的选择。
发布于 2016-03-12 00:27:29
我没有在ClojureScript中使用dojo/dgrid的经验,但我已经在ClojureScript中使用过几个javascript库。
要在ClojureScript中使用复杂的库,最好的方法就是不要接触它们,也不要在它们上运行Google Closure。(你称之为(b))。因此,您只需要为从ClojureScript代码访问的特定vars/函数在externs.js中放置很少的externs定义。你不需要为他们声明的所有东西都使用externs.js。Google Closure编译器只能在您的代码上运行,而不能在外部js库上运行。只有在以下情况下才需要放入externs : 1.从js代码中调用cljs函数(以避免调用js中已有的参数函数名) 2.从cljs代码中调用js库函数(以避免在函数调用中使用参数名称)。
所以不需要做任何之前的工作,你只需要为你所做的特定调用放一个小的externs文件。
https://stackoverflow.com/questions/21034858
复制相似问题