2013-06-17 3 views
2

클라이언트를 기반으로 종속성을 전환 할 수 있어야하는 Require.JS를 내 프로젝트에 통합하려고합니다.Require.js 선택적 모듈 로딩

현재 웹 근로자를 사용하여 수행되는 백그라운드 처리가 있습니다. 장래에 모듈을 대체해야하는 서버에서 처리를 수행하는 옵션을 원합니다.

현재 내 주요 스크립트 파일에서 다음 의사 코드가 생각 할 수있는 유일한 방법 :이 일에 청소기 접근 방식은

var modules = []; 
// This would be done with Modernizr or with a simple hasOwnProperty check 
if(window.hasFeature('web-workers') { 
    modules = ["other-dependencies", "webworker-calc"]; 
} else { 
    modules = ["other-dependencies", "server-calc"]; 
} 
require(modules, function (deps, calc) { // Code goes here }; 

거기를? 위의 예에서 Require.JS를 활용할 수 있습니까? 다음 요구

<script> 
    var require = { paths: {...} } 
</script> 
<script src="require.js" data-main="script/main"></script> 

과 :

require.config({ 
    paths: { 
     'calc-lib': window.hasFeature('web-workers') ? 'webworker-calc' : 'server-calc' 
    } 
}); 

또는 :

답변

3

당신은 require.js 소스 파일을 가져 오는 전에 전역 객체를 필요로 require.config 또는 설정을 호출 에테르에 의해 require.js에 대한 설정을 설정할 수 있습니다 그것을 "정상적인"방법으로 압축 할 수있는 방법으로

require(["other-dependencies", "calc-lib"], function (deps, calc) { 
    // Code goes here 
}); 

두 파일의 "api"가 동일하면 다른 예방 조치를 취할 필요가 없습니다.

+1

이렇게하면 좋을 것입니다. 대답을 받아 들일 것입니다. – ahjmorton

+0

config 옵션과 특히 shim 옵션을 살펴보아야합니다. http://requirejs.org/docs/api.html#config-shim – andlrc