3

Dojo でカスタム ビルドを作成しようとすると問題が発生します。それが可能かどうかさえわかりません。

アプリケーション全体で使用するすべてのコンポーネントをロードする「単一の js ファイル」が必要です。そのため、必要なものを1つだけ、または少なくとも必要なものだけを含む複数のファイルをロードしません。

私が読んだ限りでは、このビルドのプロファイルを作成する必要があります。これは私が使用するプロファイルです (例: プロファイル フォルダー内のファイル: test.profiles.js)。

dependencies ={
  layers:  [
      {
      name: "test_dojo.js",
      customBase: true,
      selectorEngine: "acme",
      dependencies: [
            "dojo/dojo",
            "dijit.form.Form",
            "dijit.form.Button",
            "dijit.form.Textarea",
            "dojo.parser",
            "dijit.form.MultiSelect",
            "dijit.layout.ContentPane",
            "dijit.layout.BorderContainer",
            "dijit.Toolbar",
            "dijit.form.TextBox",
            "dijit.form.SimpleTextarea",
            "dijit.form.ComboBox",
            "dojo.date",
            "dojo.date.locale",
            "dijit.form.DateTextBox",
            "dijit.layout.TabContainer",
            "dojo.data.ItemFileReadStore",
            'dijit.Dialog',
            "dojox.grid.DataGrid",
            "dijit.form.DropDownButton",
            "dijit.form.CheckBox",
            "dijit.form.FilteringSelect",
            "dijit.form.NumberTextBox",
            "dijit.Tree",
            "dojox.charting.Chart2D",
            "dojox.charting.widget.Legend",
            "dojox.charting.action2d.Tooltip",
            "dojox.charting.action2d.Magnify",
            "dojox.charting.themes.PlotKit.green",
            "dojox.charting.themes.PlotKit.red",
            "dojox.charting.themes.PlotKit.blue",
            "dojox.widget.Standby",
            "dojox.form.Uploader",
            "dojox.form.uploader.plugins.IFrame",
            "dojox.form.uploader.FileList",
            "dijit.ProgressBar",
            "dojox.embed.Flash",
            "dijit.Tooltip",
            "dojox.cometd",
            "dijit._base.scroll"
      ]
      }
  ],
  prefixes: [
      [ "dijit", "../dijit" ],
      [ "dojox", "../dojox" ]
  ]
};

私はこのように実行しました: > build.bat profile=test action=release

これにより、dojo -> dojo、dijit、dojox フォルダー、および dojo 内 -> test_dojo.js が見つかった場合、内部に "release" フォルダーが生成されます。

リリースの内容をアプリケーションにコピーし、html ファイルのスクリプト タグを置き換えます。

<script src="/dojo_release/dojo/test_dojo.js" type="text/javascript" 
djconfig="usePlainJson: true,parseOnLoad: true"></script>

しかし、エラーが発生します:「dojo is not defined in line 14」

dojo をロードしてからこのファイルをロードしようとすると、次のようになります。

    <script src="/dojo_release/dojo/dojo.js" type="text/javascript" 
djconfig="usePlainJson: true,parseOnLoad: true"></script>
    <script src="/dojo_release/dojo/psirt_dojo.js" type="text/javascript"></script>

アプリケーションをデバッグすると、(以前と同じように) 複数のファイルを読み込もうとしていることがわかり、「'dijit.form.Form' を読み込めませんでした; 最後に '../dijit/form/Form.js' を試しました」などのエラーが発生します。 "

これはおそらく基本的な質問であり、Dojo では静かな新しいものであり、カスタムビルドのものではさらに多くの質問です。

プロファイルを修正しましたか、それともここで何が問題なのか、何が間違っているのでしょうか。

4

1 に答える 1

2

これを行うために「customBase」フラグは必要ありません。dojo.js ファイルを、現在のコンテンツとキャッシュされた独自のモジュールでオーバーライドするだけです。

dependencies ={
  selectorEngine: "acme",
  layers:  [
      {
      name: "../dojo/dojo.js",
      dependencies: [
         ...
      ]
  }
}
于 2012-08-12T07:08:28.573 に答える