2

Require.jsで構成の準継承を行うための最良の方法を見つけようとしています。

私はルートWebアプリを持っており、次に次のように、独自のコンテキストで子Webアプリケーションを作成しています。

/
/configuration
/reporting

ルート(/)WebアプリケーションにはベースのRequire.js構成オブジェクトがあり、構成およびレポートWebアプリケーションには独自のオーバーライドがあります。jQueryのextendメソッドを使用して動作するようになりました。例:

var rootConfig = {
    // lots of stuff here: paths, shim, and baseUrl
}
var localConfig = {
    paths: {
        // this app wants to have a different version, so override
        jqueryui: '/js/lib/ui/jquery-ui-1.8.22.custom.min'
    }
}

var mergedConfig = {};
$.extend(true, mergedConfig, rootConfig, localConfig);

require.config(mergedConfig);

これは正常に機能しますが、Require.jsの外部でjQueryライブラリを静的にロードする必要があるため、Require.jsパラダイムを破ります。 これをよりエレガントに行う方法はありますか?

これらの線に沿ったJamesBurkeの複数ページの例を見てきましたが、構成を正確に継承することのポイントはないと思います。

助けてくれてありがとう!

4

1 に答える 1

0

私はトリックを行う他のいくつかのソースから非jquery拡張関数を選別することになったので、require.jsがそれを行う前にjqueryをロードしないようにすることができます...

var com = com || {};
com.my = com.my || {};
com.my.extend = function (obj1, obj2) {
for (var p in obj2) {
    try {
        if ( obj2[p].constructor == Object ) {
            obj1[p] = com.my.extend(obj1[p], obj2[p]);
        } else {
            obj1[p] = obj2[p];
        }
    } catch(e) {
        obj1[p] = obj2[p];
    }
}

return obj1;
}

...次に、require.config を呼び出す前に構成オブジェクトを拡張/マージするために使用します。例:

// merge localConfig with the root config
var com.my.mergedConfig = 
com.my.extend(com.my.rootConfig, com.my.childConfig);

// apply the configuration to require.js
require.config(com.my.mergedConfig);

それが他の誰かを助けることを願っています。

于 2013-04-10T17:17:45.307 に答える