2009-09-09 94 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