将一个模块加载到另一个模块时,RequireJS模块无序加载

我写了一个使用requirejs for AMD的web应用程序:

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

然后我使用almond和r.js将它编译成一个单独的javascript文件,使用build config:

 ({ 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(options)。
  3. 运行(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); }); 

不幸的是,现在这个块中的代码永远不会被执行。