9

require()を呼び出すメインの初期化スクリプトがあり、依存関係の1つはユーティリティフレームワークですが、require()を介して指定している他のモジュールのいくつかも、このフレームワークを依存関係として定義しています。

例(init.js):

require(['module-a', 'module-b', 'module-c'], function(a, b, c){
    // where module-c is the framework
});

そして、'module-a'で私は持っています:

define(['module-c'], function(c){
    // utilize module-c framework
});

では、AMD / RequireJsはこのシナリオをどのように処理しますか?同じフレームワークを2回ロードしますか?

助けていただければ幸いです。

よろしく、マーク

4

2 に答える 2

6

ロードされるのは1回だけで、上記のモジュールは両方とも「module-c」に対して同じモジュール値を取得します。

于 2011-10-23T15:51:30.840 に答える
2

他の人に役立つ場合-モジュールが2回ロードされたときに遭遇した状況は次のとおりです。

次のプロジェクト構造の場合:

~/prj/js/app/fileA.js
~/prj/js/app/util/fileB.js
~/prj/js/ext/publisher.js

RequireJsbaseurl~/prj/js/app

fileA.js外部(ext)依存関係を次のように参照publisher.jsします。

//fileA:
define(['../ext/publisher'], function(){});

ただしfileB.js、パスが異なる同じ依存関係を指します。

//fileB:
define(['../../ext/publisher'], function(){});

つまり、両方のファイルで、依存関係は同じ場所にありますが、依存関係のパスは異なります。この場合、publisher.jsは2回読み込まれます。

FirebugのNetタブを使用して、Firebugが2回読み込まれることを確認します。

依存関係.jsが2回読み込まれる(firebug)

pathsこれは、外部フォルダーのパスを構成することで簡単に修正できます( require_jsのドキュメントで説明されています)。

requirejs.config({
    paths: {ext: '../ext'}
});

を設定した後paths、依存関係は次のように1回だけ読み込まれfileA.jsfileB.js両方とも同じ依存関係パスを使用します。

//fileA:
define(['ext/publisher'], function(){});

//fileB:
define(['ext/publisher'], function(){});
于 2012-08-16T05:44:46.850 に答える