0

モジュールのロードについてよく読んで、モジュールは単一の JavaScript ファイルで定義する必要があることを学びました。このルールは、Dojo レイヤー ファイル ( http://download.dojotoolkit.org/release-1.9.0/dojo.js.uncompressed.js )では壊れています。ファイル名はモジュール識別子の一部だと思っていたので、このレイヤーファイルでモジュールがどのように解決されているのか、なぜ「multipleDefine」エラーがないのかわかりません;-)

4

1 に答える 1

1

ビルドされたレイヤ ファイルの内容を見ると、次のようにrequire、ローダーの内部キャッシュに多くのモジュールを一度に取り込むための呼び出しに置き換えられていることがわかります。

require({
  cache: {
    'module/A': function(){
      // contents of module A
    },
    'module/B': function(){
      // contents of module B
    },
    // etc
  }
});

これはもはや標準の AMD モジュールではありません。つまり、次のことを意味します。

  1. Dojo ローダー以外のローダーで使用しようとすると動作しません。
  2. 1 つのファイルで複数のモジュールを定義できます。

ちなみに、このプロセスが、ビルド前には正常に機能するがビルド後に壊れるグローバル変数をモジュール内に定義できる理由です (すべてのモジュール コードは、新しいレキシカル スコープを持つ新しい関数内にあります)。

于 2013-06-30T00:46:36.483 に答える