1

私のアプリケーションには、次の方法でファイルを要求するさまざまなモジュールがあります。

var urlRepository = require('modules/common/urlrepository/urlrepository');

また、次の方法を使用していくつかのモジュールが必要です。

require(['modules/common/urlrepository/urlrepository'],function(urlrepository){
    });

ここで、次のような 2 つのフォルダーに同じ構造があるとします。

    folder1
    |
    modules
    |
    common

    folder2
    |
    modules
    |
    common

currentFolder ="folder2" それぞれのモジュールをロードする変数に応じて & のようなグローバル変数を定義できる方法はありますか?

各ファイル内の既存のコードを変更したくありません。require 呼び出しの前に追加されるものが必要です。

4

2 に答える 2

0

推奨されませんが、require 呼び出しの前にプロキシを配置することでこれを実現できます。
内部から実際の require を呼び出す独自の require 関数を定義できます。url に変更を加えて、独自の require 内で取得することができます。

サンプルコードは次のように指定できます。

var oldrequire = require;
require = function(){
    var prefix = global.mode;
    if(typeof arguments[0]==='string'){
        oldrequire(prefix+arguments[0]);
        return;
    }
    var arr = arguments[0];
    if(arr instanceof Array){
        for(var index in arr){
            arr[index] = prefix+arr[index];
        }
        oldrequire(arguments);
    }
}

ファイルを取得するために相対的な require を使用するため、define 関数をオーバーライドする必要がある場合もあります。

注 : もう一度言います。特定の require 呼び出しがどのように動作するかがわからないため、これはお勧めしません。

于 2013-06-06T11:42:32.210 に答える