2014-11-05 7 views
0

저는 RequireJS를 배우려고하고 있으며 전역 변수를로드하는 것에 대해 약간 혼란 스럽습니다. window.Foo이 인스턴스화되었는지 확인하는 외부 스크립트가 있습니다. 내가 필요 전에 인스턴스화 할 필요가 의미있는 (// URL이// 외부 스크립트) 상기 외부 스크립트requirejs에서 전역 변수 사용

내 문제는 내가

requireJS

에 인스턴스화하는 방법을 잘 모르겠어요 것입니다 별도의 파일에서 define()을 실행 한 다음 외부 스크립트를로드하기 전에 해당 파일을로드합니까?

내가 requirejs.config에서 인스턴스화되지 않은 requirejs.config

답변

3

글로벌 변수를 생성 할. 기본적으로 두 가지 방법이 있습니다.

당신은 script 요소를 사용하고 오랫동안이 script 요소가 모듈 로딩을 맞이할 일 전에 나타나는, 인스턴스화 인라인을 넣어 또는 외부 스크립트에서 할 수 있습니다. 그래서 :

<script> 
    window.Foo = ... whatever; 
</script> 

다른 방법은, 작업을 수행하기 위해 RequireJS 모듈을 사용하는 것입니다 그것이 foo-config라고 말할 수 :

define(function() { 
    window.Foo = ... whatever; 
}); 

그리고 window.Foo 있어야 을 정의해야 할 필요가 다음 모듈을 종속 모듈 중 위의 모듈. 자신이 define을 사용하는 타사 모듈을 사용하여 AMD 모듈로 정의하는 경우 문제가 될 수 있습니다. 그 이유는 단지 종속성을 모듈에 추가 할 수있는 메커니즘이 없기 때문입니다. 당신은이 require 중첩 사용할 수 있습니다

require(['foo-config'], function() { 
    require(['third-party']); 
}); 

하지만이 발생하기 쉬운 추한 및 오류입니다. third-party을 사용하는 페이지가 여러 개인 경우에는 중첩 된 require을 사용하여로드해야합니다.

반면에 해당 타사 모듈이 AMD를 지원하지 않아로드하기 위해 shim 구성을 사용하면 해당 모듈을 종속 목록에 추가 할 수 있습니다.

shim: { 
    'third-party': ['foo-config']; 
}