4

これは私の最初の道場ビルドだったので、この件について私の無知を許してください。

次の(非常に単純化された)プロファイルを使用して、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" ]
]

}

...まあ、それはすべてうまく進み、私は私が要求したすべてのものを含む自分のパッケージを手に入れます。次に、私のWebアプリに次のものを含めます

<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

1 に答える 1

4

dojo.requireファイルにはまだ必要です。圧縮されたビルドは、dojo.requireすべてのファイルを 1 つのファイルに連結して圧縮することにより、必要なファイルに対して 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>

次に、require が 1 つだけ必要です。

  dojo.require('my.main');

このアプローチのもう 1 つの利点は、モジュールをアプリケーションに追加するときに 1 つのファイル (/my/main.js) を変更するだけでよいことです。

于 2009-09-09T16:24:29.977 に答える