插件AMD应用程序如何与Host非AMD应用程序通信?

时间:2012-03-28 00:31:21

标签: javascript backbone.js underscore.js requirejs js-amd

我有一个Host Javascript应用程序,它不使用AMD,BackboneJS或RequireJS但是使用jQuery,我有一个带有requireJS + BackboneJS的小应用程序,它应该是Host的插件。

现在插件AMD-Application:

  1. 应该成为主机应用程序的一些数据
  2. 应该从Host应用程序启动(进入jquery对话框)
  3. 我的问题是我在插件AMD应用程序中没有任何全局变量(函数),所以我的大型非AMD应用程序无法以这种方式看到它。

    如何设置这两者之间的通信,以便非AMD App可以查看并将数据传递给插件AMD App?

    输入点我的插件AMD App:

    <script data-main="app/js/main" src="app/js/Libs/require/require.js"></script>
    

    main.js

    require.config({
      paths: {
        jquery: 'http://code.jquery.com/jquery-1.7.1.min',
        jqueryui: 'http://code.jquery.com/ui/1.8.17/jquery-ui',
        underscore: 'Libs/underscore/underscore-min',
        backbone: 'Libs/backbone/backbone-min',
    
        //Require Plugins
        text: 'Libs/require/text',
        use: 'Libs/require/use',
        domReady: 'Libs/require/domReady'
      },
      use: {
        backbone: {
          deps: ["use!underscore", "jquery"],
          attach: function() {
            return Backbone;
          }
        },    
        underscore: {
          attach: "_"
        }
      }
    });
    
    
    require([
        'jquery',
        'use!backbone',
        'app'
        ], function(App){
    
        });
    

    app.js

    define([
     'jquery',
     'router'
     ], function($, Router){
        var initialize = function(){
         // Pass in our Router module and call it's initialize function
         Router.initialize();
        }
        return {
          initialize: initialize
        };
     });
    

1 个答案:

答案 0 :(得分:1)

不确定我完全理解,但是要从您的requirejs代码中公开全局:

require([
  'jquery',
  'use!backbone',
  'app'
], function(App){
  window.App = App;
});

现在window.App对所有代码都可见。