2012-03-28 3 views
1

저는 AMD, BackboneJS 또는 RequireJS를 사용하지 않고 jQuery를 사용하는 호스트 자바 스크립트 응용 프로그램을 가지고 있으며 호스트의 플러그인이어야하는 requireJS + BackboneJS가있는 작은 응용 프로그램이 있습니다.플러그인 AMD 애플리케이션이 AMD 비 애플리케이션 호스트와 통신하는 방법은 무엇입니까?

이제 플러그인 AMD-응용 프로그램 :

  1. 이 (JQuery와 대화에) 호스트 응용 프로그램에서 시작해야합니다 호스트 응용 프로그램

내 문제가 일부 데이터가되어야 내 큰 비 AMD의 애플 리케이션이 이런 식으로 볼 수 없도록 플러그인 - AMD - 응용 프로그램에서 어떤 전역 변수 (함수)가 없다.

비 AMD 응용 프로그램이 데이터를보고 AMD App에 전달할 수 있도록이 둘 사이의 통신을 어떻게 설정할 수 있습니까?

항목 내 플러그인 AMD 앱 포인트 :

<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){ 

    }); 

내가 c를 확인

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

하지 app.js ompletely 이해하지만 requirejs 코드에서 전역을 노출 :

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

것은 이제 window.App 모든 코드를 볼 수 있습니다.

+0

감사합니다. 즉, 다음 호출 할 수 의미 : window.App.initialize()? – trouble

+0

네, 그게 좋은 생각입니다. 외부 스크립트가 그것을 사용하기 전에'App'가 requirejs에 의해로드되었는지 확인해야합니다. –