4

パッケージに注意深く構造化した Dojo JavaScript コードを単一のJavaScript ファイルにビルドしたいと考えています。私はそれを行う方法について少し混乱しています。

今のところ私はこれを持っています:

var profile = {
    ...
    layers: {
        'app': {
            include: [
                'dojo/module1',
                'dojo/module2',
                ...,
                'dojo/moduleN',
                'package2/module1',
                'package2/module2',
                ...,
                'package2/moduleN'
            ]
        }
    }
    ...
};

すべてのモジュールをアプリ層に手動で追加する必要はありますか? 「すべて」、または「すべて参照済み」とだけ言うことはできませんか? dojo/something modul を使用しない場合は含めたくありません。また、私のリリース フォルダーには、1 つのファイルだけが必要です。

それで - これは達成できますか?参照されたモジュールのみの Dojo 自動ビルドを単一の (もちろん圧縮および難読化された) JavaScript ファイルにクリーンアップしますか?

4

2 に答える 2

3

このビルド チュートリアルのレイヤー セクションの例を見てください。

のカスタム ビルドを作成することもできますdojo.js。これは、AMD を使用する場合に特に重要です。デフォルトでは (下位互換性のため)、dojo/mainモジュールはビルド システムによって に自動的に追加されdojo.js、コードが実際には使用しない可能性があるモジュールをロードすることでスペースが浪費されるためです。のカスタム ビルドを作成するにはdojo.js、それを個別のレイヤーとして定義し、customBase と boot の両方を true に設定します。

   var profile = {
        layers: {
            "dojo/dojo": {
                include: [ "dojo/dojo", "app/main" ],
                customBase: true,
                boot: true
            }
        }
    };

アプリ (またはモジュール) のルートを含めることで、「アプリ」全体を 1 つのレイヤーに含めることができます。そのアプリのモジュールがそのアプリで明示的に必要とされていない場合は、手動で含める必要があることに注意してください。その説明については、上記のチュートリアルのレイヤー セクションの 2 番目の例を参照してください。

プロジェクトのレイアウトを変更またはカスタマイズする場合は、レイヤーに含めるパッケージを定義することもできます。

packages: [
    {name:'dojo', location:'other/dojotoolkit/location/dojo'},
    /* ... */
],
layers: {
    'dojo/dojo': { include: ['dojo/dojo'] },
    /* ... */
}
于 2013-11-06T16:11:29.723 に答える
1

追加するモジュールが既に他のモジュールに依存している場合は、すべてのモジュールを指定する必要はありません。たとえば、'app/MainApplication' をレイヤーに含めると、ビルダーは app/MainApplication が依存するすべてのモジュールを含めます。MainApplication.js がプロジェクト内のすべてに触れる場合、すべてが含まれます。
レイヤーのビルド中に、Dojo はすべてのモジュールで require() および define() 呼び出しを解析します。次に、依存関係ツリーを構築します。Nls リソースも含まれています。コードでは、既存のパッケージ内のファイルとしてレイヤーに名前を付ける必要があります。私のビルドでは、単一の単語でレイヤーに名前を付けるとエラーが発生しました。コーディングする必要があります

var profile =
   layers: {
     'existingPackage/fileName': {
         ...
      }
   }

正確に 1 つのファイルが必要な場合は、レイヤーに「dojo/dojo」を含め、customBaseおよびブートフラグを指定する必要があります。

Dojo は常に、層を構築する前にすべてのパッケージを構築します。リリース ディレクトリには常に dojo および dijit フォルダーがあり、その中に dojo ファイルの縮小版が含まれています。
必要なレイヤーファイルをコピーして、それ以外はすべて削除してください。

于 2013-11-07T19:43:05.580 に答える