Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dojo toolkit和dgrid的闭包编译器外部程序_Javascript_Dojo_Google Closure Compiler_Clojurescript_Dgrid - Fatal编程技术网

Javascript Dojo toolkit和dgrid的闭包编译器外部程序

Javascript Dojo toolkit和dgrid的闭包编译器外部程序,javascript,dojo,google-closure-compiler,clojurescript,dgrid,Javascript,Dojo,Google Closure Compiler,Clojurescript,Dgrid,是否有人必须共享dojo和dgrid的外部定义文件 我正试图在我的clojurescript项目中包含这些内容,甚至使用“简单”的clsure编译器优化选项 目前,我发现dgrid和dojo工具包与Clojurescript编译过程不兼容。 换句话说,这是不可能的 a) 包括dojo或dgrid with:foreign libs选项,然后利用 closurecompiler使用closurecompiler:advanced或偶:simple选项创建一个“缩小版” b) 也不可能包含带有:ex

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

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

目前,我发现dgrid和dojo工具包与Clojurescript编译过程不兼容。 换句话说,这是不可能的 a) 包括dojo或dgrid with:foreign libs选项,然后利用 closurecompiler使用closurecompiler:advanced或偶:simple选项创建一个“缩小版”

b) 也不可能包含带有:extern选项的dojo或dgrid库 因为为此,必须创建外部定义列表(dojo/dgrid版本中没有)

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

我想(b)可能最终会起作用,但为此我需要找到externs库。 希望有人已经为Dojo1.9和最新的dgrid完成了它

在这里发布之前,我已经检查了闭包编译器当前可用的“externs”存储库,而dojo不在那里

我还发现了一个externs的在线提取器

但是,我甚至不确定dgrid/dojo文件要做什么


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

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

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

在ClojureScript中使用复杂库的最佳方法就是不要触摸它们,也不要在它们上运行Google Close。(你称之为(b))。 因此,您需要在externs.js中放入很少的externs定义 仅适用于从ClojureScript代码访问的特定变量/函数。您不需要externs.js来处理他们声明的所有内容。 Google Closure编译器将只在您的代码上运行,而不是在外部js库上运行。 只有在以下情况下,才需要放置外部对象: 1.从js代码中调用cljs函数(避免调用js中没有的munged函数名) 2.从cljs代码中调用js库函数(避免在函数调用中使用函数名)

因此,不需要事先做任何工作,您需要为所做的特定调用放置一个小的externs文件