这是我的第一个道场建设,所以请原谅我对此事的无知.
我刚刚使用以下(非常简化的)配置文件从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.require对所有文件连接到一个文件并缩小它所需的文件执行GET请求.这节省了很多页面加载周期(因为我相信你现在已经看到了).
如果你真的想摆脱许多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');