2009-09-09 150 views
4

这是我第一次打造道场所以请原谅我对这件事的无知。Dojo构建 - > dojo.require();仍然需要?

我刚刚创建使用下面的(非常简化的)轮廓从道场构建系统我的自定义生成:

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()'线...... 谢谢堆。

回答

4

您的文件中仍然需要dojo.require。压缩的版本只是防止dojo.require通过将所有文件连接成一个文件并缩小文件所需的文件进行GET请求。这可以节省页面加载周期(我相信你现在已经看到了)。

如果你真的想摆脱许多dojo.require(这我不是太疯狂,因为我喜欢看到什么在页面中使用)的,你可以做这样的事情:

dojo.provide('my.main'); 
dojo.require('dijit.cx.TaskPane'); 
... all the other dojo.require statements ... 

然后把这个文件在平行的目录道场:

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)将模块添加到应用程序时。

+0

感谢您的洞察力。 我会尝试,我已经看到这个地方(使用'参考'文件),但我认为配置文件依赖关系就够了。感谢堆! – belzebu 2009-09-10 05:48:18

+0

不客气。如果您有任何问题,请回来。 – seth 2009-09-10 16:06:14

+0

实际上,只要将其称为“dojo/dojo.js”,就可以将您的图层合并为一个大文件。请参阅:https://dojotoolkit.org/documentation/tutorials/1.8/build/(应用程序构建配置文件大约一半的时间)。它包含'... layers [“dojo/dojo.js”]。include:[....“app/main”,“app/run”] ...,并将它们放在常规dojo.js下内容。然后,使用'parseOnLoad:true'来设置djConfig来进行标记解析 – mschr 2015-06-14 23:04:37