Изискване на неправилно зареждане на JS модули при зареждане на един модул в друг

Написах уеб приложение, което използва requirejs за AMD:

require(dependencies, function(dependencies) { 
    (function($) {
        $.fn.plugin = function(options) { return this; };
    })(window.jQuery);
});

След това използвах almond и r.js, за да го компилирам в един javascript файл, използвайки конфигурацията за изграждане:

({
    baseUrl: ".",
    paths: {
        'jquery' : 'vendor/jquery-1.9.1.min'
        'almond' : "../node_modules/almond/almond"
    },
    name : "almond",
    include : "main",
    out : "plugin.js",
    wrap : true
})

След това искам да използвам този плъгин в друго приложение, също базирано на requirejs. Тук имам:

require.config({ paths: { 'jquery': 'vendor/jquery-1.9.1.min' } });
require(['jquery','plugin'], function ($) {
    $('#plugin').plugin(options);
});

Кодът обаче се зарежда неправилно:

  1. Заредете jquery и плъгини js файлове.
  2. Изпълнете $('#plugin').plugin(опции).
  3. Run (function($) { $.fn.plugin = function(options) { return this; }; })(window.jQuery);

Очевидно (2) е грешка, тъй като (3) трябва да се изпълни първо. Въпросът е защо?

АКТУАЛИЗАЦИЯ 1

Едно предложено решение е да промените първия блок от код на:

define(dependencies, function(dependencies) { 
    (function($) {
        $.fn.plugin = function(options) { return this; };
    })(window.jQuery);
});

Веднъж компилиран, това става:

define("main", dependencies, function(dependencies) { 
    (function($) {
        $.fn.plugin = function(options) { return this; };
    })(window.jQuery);
});

За съжаление сега кодът в този блок НИКОГА не се изпълнява.


person Matthew James Davis    schedule 09.07.2013    source източник