0

dijit レイアウトと組み合わせて道場を理解しようとしています。より具体的には、JSでレイアウトウィジェットを要求する必要がありますか、それともhtmlデータ属性を十分に使用していますか?

レイアウトのドキュメントを読みましたが、次の3 つのものが必要なようです。

  • JavaScript: 使用するレイアウト ウィジェットが必要です
  • HTML マークアップ
  • CSS

しかし、JavaScript で次のようにレイアウト ウィジェットを要求する必要がある理由がよくわかりません。

require(["dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane"]);

これは、この例に記載されています。

「dijit/layout/BorderContainer」と「dijit/layout/ContentPane」を必要としないデモ を作成しましたが、問題なく動作しています。

これらをrequireステートメントから除外しても安全ですか?

4

2 に答える 2

2

パーサーにモジュールをロードさせるのではなく、モジュールを要求する必要があります。これは、パーサーが実行される前にすべてのモジュールをロードして、すべての依存モジュールをレイヤー ファイルにバンドルできるようにすることが理想的であるためです。

これは、すべての共通モジュールを含むレイヤーを作成できるため、何百もの小さな .js リクエストをサーバーにヒットさせる必要がなく、代わりにより大きなものをロードできることを意味します。

また、カスタム モジュールがある場合は、パーサーに検出させるのではなく、カスタム モジュール内のすべての依存ウィジェットをロードする必要があります。

于 2013-11-01T23:25:37.390 に答える
1

dojo/parserはすべての依存関係をロードするので、JavaScript でプログラム的にそれらを要求する必要はありませんが、コードをビルドすることを決定したら、つまり、すべての依存関係を単一のファイルに入れることを決定したら、そこに必要になります。これが、パーサーが警告する理由です。依存関係をロードするとき:

ここに画像の説明を入力

この自動要求も理由です。なぜa をparser.parse()返すのかpromise、依存関係を非同期的にロードしている可能性があるためです。

parser.parse().then(function(/* Array */ widgetInstances) {

});
于 2013-11-01T16:22:37.353 に答える