0

Mediator-Sandbox ライブラリと、このライブラリの上に構築された Router 拡張機能を入手しました。

ライブラリは次のように構築されます。

(function(window) {

  var MedSan = {};

  window.MedSan = MedSan;

})(this);

拡張子は次のようになります。

(function(_, Backbone, MedSan) {

  MedSan.Router = {};

})(_, Backbone, MedSan);

拡張機能をロードするために必要な構成は次のようになります。

require.config({

    baseUrl: "javascripts",

    shim: {
        "jquery": {
            exports: "$"
        },
        "underscore": {
            exports: "_"
        },
        "backbone": {
            deps: ['jquery', 'underscore'],
            exports: "Backbone"
        },
        "Distribution": {
            exports: "Distribution"
        },
        "Distribution.Router": {
            deps: ['underscore', 'backbone', 'Distribution'],
            exports: "Distribution"
        }
    },

    /*
    map: {
        "*": {
            "Distribution": "Distribution.Router"
        }         
    },
    */


    paths: {
        "jquery": "Vendors/jquery",
        "underscore": "Vendors/underscore",
        "backbone": "Vendors/backbone",

        "Distribution": "Distribution/Distribution",
        "Distribution.Router": "Distribution/Plugins/Router"
    }

});

完全なライブラリを次のように使用できるようになりました。

require(['Distribution.Router'], function(Distribution) {});

マップ構成のコメントを外すと、次のようにルーター拡張機能を備えた完全にロードされたモジュールを使用できるようになります。

require(['Distribution'], function(Distribution) {});

モジュールのタイムアウトが発生するよりも。

私は何を間違っていますか?

4

1 に答える 1

1

にマップDistributionすると、 にも依存Distribution.Routerするため、循環依存関係が作成されます。Distribution.RouterDistribution

これを修正するには、マップを上書きする別の行を追加するDistributionだけDistribution.Routerです:

map: {
    "*": {
        "Distribution": "Distribution.Router"
    },
    "Distribution.Router": {
        "Distribution": "Distribution"
    }
}
于 2012-11-11T22:24:31.680 に答える