Dojo构建->;dojo.require();还需要吗?

Dojo构建->;dojo.require();还需要吗?,dojo,dojo-build,Dojo,Dojo Build,这是我第一次构建dojo,所以请原谅我对此事的无知 我刚刚使用以下(非常简化的)配置文件从dojo构建系统创建了自定义构建: 依赖项={ 条带控制台:“正常”, 图层:[ { 名称:“../dijits/cx/dijitsCXbuild.js”, 版权文件:“CopyrightCX.txt”, 依赖项:[ “dojo.parser”, “迪吉特,迪吉特”, “dijit.\u小部件”, “dijit._模板化”, “dijit.\u容器”, “dojo.i18n”, “dojo.NodeList

这是我第一次构建dojo,所以请原谅我对此事的无知

我刚刚使用以下(非常简化的)配置文件从dojo构建系统创建了自定义构建:

依赖项={
条带控制台:“正常”,
图层:[
{
名称:“../dijits/cx/dijitsCXbuild.js”,
版权文件:“CopyrightCX.txt”,
依赖项:[
“dojo.parser”,
“迪吉特,迪吉特”,
“dijit.\u小部件”,
“dijit._模板化”,
“dijit.\u容器”,
“dojo.i18n”,
“dojo.NodeList fx”,
“dojox.grid.cells”,
“dojox.grid.DataGrid”,
“dojox.layout.GridContainer”,
“dijit.TitlePane”,
“dijits.cx.TaskPanel”,
“dijits.cx.Identify”
]
}
],
前缀:[
[“dijit”、“./dijit”],
[“dojox”、“./dojox”],
[“dijits.cx”,“./dijits/cx”]
]
}

。。。好吧,一切进展顺利,我得到了我自己的包裹和我所要求的一切。然后在我的webapp中,我包括以下内容


djConfig={
isDebug:false,
parseOnLoad:true,
locale:getLocale()
};
。。。看起来还可以,直到代码需要实例化第一个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>

这种方法的另一个优点是,在向应用程序添加模块时,只需更改一个文件(即/my/main.js)。

感谢您的帮助。我会试试看,我已经在某个地方看到过(使用“引用”文件),但我认为配置文件依赖关系就足够了。谢谢你!实际上,只要您称它为“dojo/dojo.js”,就可以将层合并到一个大文件中。请参阅:(应用程序构建概要文件的一半)。它有
。。。层[“dojo/dojo.js”]。包括:[……“app/main”、“app/run”]…
,并将它们放在常规dojo.js内容的正下方。然后只需将djConfig设置为
parseOnLoad:true
进行标记解析
  dojo.require('my.main');