这是我的第一个道场建设,所以请原谅我对此事的无知. 我刚刚使用以下(非常简化的)配置文件从dojo构建系统创建了我的自定义构建: dependencies = {stripConsole: "normal",layers: [ { name: "../diji
我刚刚使用以下(非常简化的)配置文件从dojo构建系统创建了我的自定义构建:
dependencies = { stripConsole: "normal", layers: [ { name: "../dijits/cx/dijitsCXbuild.js", copyrightFile: "CopyrightCX.txt", dependencies: [ "dojo.parser", "dijit.dijit", "dijit._Widget", "dijit._Templated", "dijit._Container", "dojo.i18n", "dojo.NodeList-fx", "dojox.grid.cells", "dojox.grid.DataGrid", "dojox.layout.GridContainer", "dijit.TitlePane", "dijits.cx.TaskPanel", "dijits.cx.Identify" ] } ], prefixes: [ [ "dijit", "../dijit" ], [ "dojox", "../dojox" ], [ "dijits.cx", "../dijits/cx" ] ]
}
……好吧,一切都很好,我得到了我要求的一切包.然后在我的webapp中,我包括以下内容
<script type="text/javascript"> djConfig = { isDebug:false, parseOnLoad:true, locale:getLocale() }; </script> <script type="text/javascript" src="Lib/cxdojo/dojo/dojo.js"></script> <script type="text/javascript" src="Lib/cxdojo/dijits/cx/dijitsCXbuild.js"></script>
…看起来没问题,直到代码需要实例化第一个dijit并且它以臭名昭着的方式失败:“dijits.cx.TaskPanel不是构造函数.”
我可以通过包含“dojo.require()”来摆脱这个问题,但这是我通过创建自定义自己的构建我将摆脱的东西.关于我做错了什么或我该怎么做才能避免’dojo.require()’行的任何想法……
谢谢堆.
如果你真的想摆脱许多dojo.require(我不是太疯狂,因为我喜欢看到页面中使用了什么),你可以做这样的事情:
dojo.provide('my.main'); dojo.require('dijit.cx.TaskPane'); ... all the other dojo.require statements ...
然后将它放在与dojo平行的目录中的文件中:
Lib/cxdojo/my/main.js Lib/cxdojo/dojo/dojo.js .. etc ...
然后将您的依赖项更改为:
dependencies: [ "my.main" ]
然后在您的文件中,您可以将其包含在脚本标记中:
<script type="text/javascript" src="Lib/cxdojo/my/main.js"></script>
然后,您只需要一个:
dojo.require('my.main');
此方法的另一个优点是,只需在将模块添加到应用程序时更改一个文件(/my/main.js).