24

オプティマイザーのドキュメントをかなり長い間読んでいますが、理解できないようです。ドキュメントによると:

オプティマイザーは、最上位のrequireおよびdefine呼び出し、または簡略化されたCommonJSラッピングのrequire('name')文字列リテラル呼び出しに渡される文字列リテラルの配列で指定されたモジュールのみを結合します。したがって、変数名を介してロードされたモジュールは見つかりません。

これまでのところOKです。これは基本的に、r.jsがネストされた依存関係を含めたりクロールしたりしないことを意味します。ここで、次のような「メインアプリケーション」ファイルがあると仮定します。

require([ 'es5shim', 'tools' ], function() {
    console.log('fictive app entry point');

    require([ 'domready!' ], function( doc ) {
        console.log('domReady, loading GUI modules...');
        require([ 'GUI/window', 'GUI/header', 'GUI/content' ]);
    });
});

ここで問題がかなり明らかになると思います。r.js(オプティマイザー)は、リンクするだけでそのファイルを作成しes5shim.jsますtools.jswindow.jsこのオプティマイザー、header.jsおよびcontent.jsこの例のファイルもリンクする必要があることを伝えるための良い方法/回避策はありますか?

もちろん、domReadyこのインスタンスのプラグインはロードされ、最終的にコールバックを実行しますが、ここでの構造自体は、オプティマイザーがその仕事をするのを妨げているようです。

質問は

  • 「Toprequirecall 」にすべてのモジュールをリストするだけの場合、r.jsには、ネストされたモジュールとネストされたネストされたモジュールからのすべてのトップrequireと呼び出しがメインアプリファイルにインクルード+リンクされますか?define

  • 彼らは、ドキュメントのr.jsのインクルードオプションについて言及しています。ここで意味がありますか?もしそうなら、それを適切に呼び出す方法は?

もちろん、後でモジュールを遅延ロードするオプションを失いたくはありませんが、この種の依存関係(DOMContentLoadedを待機)については、それを回避する方法があることを願っています。

4

1 に答える 1

45

デフォルトでは、RequireJSはネストされたrequire呼び出しをスキャンしません。これは、ネストされたrequire呼び出しが実行時に依存関係をロードすることを目的としているためです。これを上書きするには、

findNestedDependencies: true

最適化構成で。お役に立てば幸いです。

于 2012-08-10T20:02:00.043 に答える