2014-01-10 109 views
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文件。