2012-01-05 2 views
7

는 일반적으로 당신이 require.js를 사용하여 백본 응용 프로그램에로드 외부 콜백 후 require.js 내에서 백본 응용 프로그램을 초기화합니다. 당신의 앱이 DOM의 조작이 필요한 경우어떻게 일부 종속성을로드하고 응용 프로그램을 시작 페이지로드</p> <pre><code><script data-main="js/main" src="js/libs/require/require.js"></script> </code></pre> <p>동안

, 당신은 domReady 플러그인

require(['domReady','app' ], function (domReady, App) { 
    domReady(function (App) { 
    App.Initialize() 
    }): 
}); 

을 사용할 수 있습니다하지만 내 응용 프로그램은 플래시 API와 통신합니다. 플래시 플러그인이 자신의 XML을로드 할 때까지 기다려야합니다. 이 일이 끝나면 자바 스크립트 콜백 다시 화재. 이 콜백은 require.js와 같이 종속성을 사용하여 app.initialize()를 실행해야합니다.

첫 번째 방법과 두 번째 방법 (dom 기다림)으로 플래시 API를 사용할 수있는 것은 아닙니다. 그렇다면 어떻게 app.js가 종속성을 가지며 플래시 API를 사용할 수 있도록 app을 초기화 할 수 있습니까? 또는 공식화 다르게 : 분명히,이 충분 : 어떻게

이 업데이트는 자바 스크립트 이벤트/콜백을 통해 require.js을 초기화 할 수 있습니다

<script data-main="js/main" src="js/libs/require/require.js"></script> 
<script type="text/javascript"> 
    function init(){ 
     require(['framework/app'], function(App){ 
      App.initialize(); 
     }); 
    }  
</script> 

플래시 플러그인이 단지 window.init를 호출 할 수 있습니다() 앱을 시작합니다. 단점은 앱이 초기화 될 때 jQuery가로드되는 것과 같은 것입니다. 이것은 물건이 보여지기 전에 약간의 지연으로 이어질 수 있습니다.

은 내가 몸의 머리/결국 jQuery를로드 할 때, require.js이

답변

0

내가 (많이 알고하지 않습니다/다시 JQuery와의 다른 사본의 인스턴스를, 또는 캐시/DOM에서 읽을 것, 경우 eonder 실제로 브라우저에서 플래시에 대해 아무것도),하지만 플래시가로드 JavaScript를 감지 할 수있는 방법이있는 경우 :

  1. 플래시가 자바 스크립트 전역 변수를 변경 확인이
  2. 플래시를 확인 몇 가지 요소에 속성을 추가

그런 다음이 조건을 검사하는 JavaScript 함수를 만들 수 있습니다 (예 : 1 초마다). 검사가 유효화되면 응용 프로그램을 초기화합니다. 이 기능을 만들려면 setInterval(function, time)을 사용하십시오. 앱을로드 한 후 간격을 지우고 다시로드되지 않도록하십시오.

1

requirejs shim config를 활용하면 지정된 필수 모듈에 대해 '내보내기'를 정의 할 수 있습니다. 이 수출은 글로벌 컨텍스트에 캐시 값이됩니다 및 콜백 함수 사용으로 제공 될 것이다 : 여기에서

<script data-main="js/main" src="js/libs/require/require.js"></script> 
<script type="text/javascript"> 
    requirejs.config({ 
     shim: { 
      'framework/app': { 
       exports: 'App' 
      } 
     } 
    }); 
    require(['framework/app'], function(App){}); 
</script> 

, 단지 호출 할 수있는 자바 스크립트 함수를 다시 호출하는 코드를 :

App.initialize(); 
+0

답변을 주셔서 감사합니다. 2 년이 지났지 만 지금은 제대로 작동하는지 테스트 할 수 없습니다. – Jareish