2016-11-28 5 views
1

나는 큰 응용 프로그램을 가지고 있습니다. 지금은 app.js가 약 5MB이고 공급 업체 j는 1MB 가량입니다. 나는 그것이 10MB를 넘을 것으로 가정하고, 우리의 목표 사용자는 느린 인터넷에 있으며 각각의 사용자는 다른 권한을 가지므로 대부분의 구성 요소는 사용자가 사용할 수 없습니다.소스 코드 concat을 제외하기 위해 ember-cli 빌드를 사용자 정의하는 방법

저는 빌드 프로세스에서 일부 큰 구성 요소를 제외하고 필요할 때로드 할 생각이었습니다. 지금까지 나는이 작업을 할 수 있다고 생각 구성 요소가로드 된 경우 다음

뭔가

if(!container.hasRegistration(`component:${ componentName }`)){ 
    $.when(
     $.getScript(`/remote-components/${ componentName }/component.js`), 
     $.getScript(`/remote-components/${ componentName }/template.js`) 
    ).done(()=> { 
     let container = getOwner(this); 
     container.register(`component:${ componentName }`, require(`${ ENV.modulePrefix }/components/${ componentName }`).default, {singleton: false}); 
     this.set('isLoaded', true); 
    }) 
} 

처럼 AJAX

사용하여로드 할 경우, 확인이 아이디어 https://github.com/Cryrivers/ember-remote-component/blob/master/app/components/remote-component.js을 좋아했다. 어떻게 빌드 프로세스에서 구성 요소를 제외하고 합치을 중지뿐만 아니라 /DIST/구성 요소에 보관하는/ABC/ 폴더

B :하지만, 여기에 두 가지 질문

A는 있습니다 AJAX를 통해로드 한 후에 템플릿을 컴파일하면 해당 구성 요소의 template.hs를 template.js로 컴파일하면 큰 성능 문제가 발생할 수 있습니다.

답변

3

이것은 OP가 찾고있는 정확한 해결책이 아니다,하지만 난 그게 더 나은 장기적인 해결책 생각 :

내가 게으른로드 엔진은이 문제에 접근하는 더 나은 방법이 될 것 같아요. https://github.com/dgeb/ember-engines

대부분의 사용자가 대부분의 앱을로드하지 못하게 할 수 있습니다.

지연 리드를위한 실험 지원은 프로젝트의 README에 따라 마스터 브랜치에서 사용할 수 있습니다.

+0

네, 덕분에 2.10에 도착 했으므로 잘하면 2.12 LTS 버전이되었습니다. 그 시간에 엔진으로 업데이트 할 예정입니다 ... 감사합니다. –