关闭Dojo工具包和dgrid的编译器externs

时间:2014-01-10 01:55:34

标签: javascript dojo google-closure-compiler clojurescript dgrid

是否有人必须共享文件以获取dojo和dgrid的外部定义?

我正在尝试将这些包含在我的clojurescript项目中,并使用甚至“简单”的clsure编译器优化选项。

目前我发现dgrid和dojo工具包与Clojurescript编译过程不兼容。 换句话说,它是不可能的 a)包含dojo或dgrid:foreign-libs选项然后利用 闭包编译器使用闭包编译器创建'缩小版本:高级或甚至:简单选项

b)也不可能将dojo或dgrid库包含在:extern选项中 因为那个人必须创建一个extern定义列表(dojo / dgrid版本中没有)。

我很确定选项(a)是一个死胡同,因为要工作,dojo团队需要对工具包进行更改,并且它可能是低优先级。我已经阅读过Stephen Chung的50多页文档,了解如何修改dojo以使用google-closure,但它远远超出了我为Dojo 1.9及更高版本重新实现的能力。

我在考虑(b)最终可能有效,但为此我需要找到外部库。 希望有人为dojo 1.9和最新的dgrid做过。

在发布之前,我已经检查了闭包编译器当前可用的'externs'的存储库,并且dojo不存在 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文件。

因此,看看是否有人已经创建了这些外部。

2 个答案:

答案 0 :(得分:0)

您可以使用自己的源文件作为外部定义。显然这意味着编译器无法优化库,但如果你说,你不需要它,那么这是一个很好的工作选项。

答案 1 :(得分:0)

我对ClojureScript中的dojo / dgrid没有经验,但我已经使用了几个带有ClojureScript的javascript库。

使用ClojureScript复杂库的最佳方法就是不要触摸它们,也不要在它们上运行Google Closure。 (你所说的(b))。 因此,您需要在externs.js中放置很少的外部定义 仅适用于您从ClojureScript代码访问的特定变量/函数。他们声明的一切都不需要externs.js。 Google Closure编译器仅在您的代码上运行,而不在外部js库上运行。 你只需要在以下情况下安装外部人员: 1.从js代码调用你的cljs函数(以避免调用你js中没有的munged函数名) 2.从你的cljs代码中调用js库函数(以避免在函数调用中使用函数名)。

因此,之前没有需要完成的工作,您需要为您所进行的特定通话准确放置一个小的外部文件。

相关问题