2014-10-16 3 views
1

여러 소스에서 여러 요구 구성 파일을 사용하는 모듈 식 단일 페이지 응용 프로그램을 구축 중입니다. 내 응용 프로그램에서 특정 유형의 모든 모듈 목록을 사용할 수있는 방법을 원합니다. 이런 일이 :요구 사항 다중 주입

define('module-type/an-implementation',...) 
define('module-type/another-implementation',...) 

require('module-type/*', function(modules){ 
    $.each(modules,function(m){ m.doStuff(); }); 
}) 

이 유사한 패턴 의존성 인젝터 여러 의존성 주입에 사용하는 것입니다. (예 : https://github.com/ninject/ninject/wiki/Multi-injection)

는이 작업을 수행하는 방법 (또는 비슷한) 필요에 있습니까?

+0

현재로서는 불가능합니다. – Louis

답변

1

RequireJS는 어떤 모듈이 필요할 때까지 어떤 모듈이 존재하는지 알지 못합니다. 일단 모듈이 요구되거나 의존되면 RequireJS는 모듈의 이름과 RequireJS의 구성에 따라 모듈을 요청할 곳을 파악할 것입니다. 일단 모듈이로드되면 모든 종속성이로드되고 모든 모듈 본문이 실행될 때까지 종속성을 확인하고 차례로 처리하기 위해 검사/실행될 수 있습니다.

"특정 유형의 모든 모듈 목록을 소비"하려면 이러한 모듈을 모두 찾을 수 있어야합니다. RequireJS는 어떤 모듈이 존재하는지 알 수있는 어떤 수단도 없기 때문에 "다중 주입"을 구현하는 것만으로는 충분하지 않습니다.

추측 모듈 레지스트리의 일부 종류의 빌드 시스템의 도움으로 만들어지고 채워 할 수

: 예를 들어, 파일 (module-registry.js 말)이 제거 된 소스 디렉토리에 파일이 추가 될 때마다/생성하거나 이름을 바꿀 수 있습니다 다음, 다중 분사 같은 가능할 수 :

multiRequire('module-type/*', function(modules){ 
    $.each(modules,function(m){ m.doStuff(); }); 
}) 

어떤 차례로 부를 것이다

require(findModules(pattern), function() { 
    callback(Array.prototype.slice.call(arguments, 0)); 
}); 

(여기서 multiRequirefindModules은 모듈 레지스트리에서 제공함).

+0

그래,이게 정확히 맞는 것 같아.이 일을 스스로 할 수있는 확장 프로그램을 만들었고 실제로 어려운 모듈 목록이 없다는 것을 알았다. 나는 후에 어떤 것을 달성 할 수있는 또 다른 방법을 찾아야 할 것입니다. 감사 –