2014-12-10 2 views
3

모든 개별 서비스를로드하려고 시도하는 Services.js 파일이 있습니다. 이러한 파일은 싱글 톤으로 공개됩니다.중첩 클래스를 사용하여 ES6에서 네임 스페이스 시뮬레이션

Services.js

var Services = { }; 

export default Services; 

그때 샘플 서비스는 서비스에서 중첩 된, 그래서 Services.Sample.Operation()

가`SampleService.js '가

import Services from './Services'; 

Services.Sample = { 

    Operation: function() { 
     alert('operation!') 
    } 
}; 

export default Services.Sample; 

그럼, 내가하려고 예 및 수입 호출 할 수 원하는 :

import Services from './services/Services'; 
import SampleService from './services/SampleService'; 

alert(Services);   // yields '[object object]' 
alert(SampleService); // yields '[object object]' 
alert(Services.Sample); // yields 'undefined' <--- This is the one I actually want to use 

어떻게 얻을 수 있습니다 그래서 나는 Service.Sample 오히려 tan SampleService를 참조 할 수 있습니다. 어떻게하면 SampleService를 Services 아래에 중첩시킬 수 있습니까?

답변

3

당신이 SampleService.jsServices.js을 수입하고 있기 때문에 귀하의 방법은 작동하지 않지만, Services 변수가 Services.js에서 '원래'Services 변수가 아닙니다. 다음

import SampleService from './SampleService'; 

var Services = { }; 
Services.Sample = SampleService; 

export default Services; 

과 :

SampleService.js :

SampleService = { 

    Operation: function() { 
     alert('operation!') 
    } 
}; 

export default SampleService; 

Services.js

import Services from './services/Services'; 

alert(Services);   
alert(Services.Sample); 

export default Services; 

이 내가 할 거라고 무엇

이 같은 것입니다 또한 기본()에 의존하고 모듈의 일관성에 대해 나에게 더 의미가 납니까 (ServicesSampleServiceServices의 독립이 될 수 없습니다 SampleService.jsServices.js에서 할 수있는 작업을 정의, 모듈로드 Services.jsSampleService.js에 따라뿐만 아니라 안 나중에 변경 될 수도 있습니다 ...).

관련 문제