2013-12-13 9 views
1

나는 일반적으로 여기에 대한 답변을 찾고 있지만 좋은 대답을 찾을 수없는 지점 finlly 얻었습니다.지연로드 Ember 응용 프로그램

저는 처음에는 주 경로를 시작하고 여는 데 필요한 것만으로로드되는 엠버 애플 리케이션을 빌드하려고합니다. 다른 모든 컨트롤러, 뷰, 템플릿 등은 특정 경로가 트리거 될 때 느리게로드됩니다.

내가 어떻게 여기를 수행하는의 좋은 예를 발견 : http://madhatted.com/2013/6/29/lazy-loading-with-ember

내 주요 문제는 거기에 도구를 구축 지연로드 응용 프로그램 코드의 이론을 뒷받침 결정하는 것입니다? 지금까지 Brunch, Yeoman, Ember App Kit가 모든 스크립트와 템플릿을 축소하고 연결 한 것처럼 보였습니다. 나는 minification에 매우 행복하지만 그 파일들을 분리시켜야합니다. 나는이 코드를 app/assets 위치에 두는 것에 대해서 생각해 봤는데, 그래야 concat없이 복사 할 수 있지만 축소되지는 않는다.

해결책이있는 사람이 있습니까? 감사!

답변

1

당신은 당신의 브런치 설정

files: { 
    javascripts: { 
     joinTo: { 
      'javascripts/app.js': /^app(\/|\\)(?!admin)/, // concat everything in app, except /app/admin 
      'javascripts/vendor.js': /^vendor/, 
      'javascripts/admin.js': /^app(\/|\\)admin/ // concat only /app/admin 
     } 
    } 
} 

그런트 (보좌관과 타다 남은 애플리케이션 키트에 사용) 터무니 유연성에 다음을 추가하여 브런치와 함께이 작업을 수행 할 수 있습니다, 그래서 당신이 동일한을 설정할 수 있습니다 확신 거기에 잠깐 들러서 Gruntfile.js로 들어가서 거기에있는 것

+0

"물론 Gruntfile.js로 다이빙하면 같은 것을 설정할 수 있습니다. 물론 : 더 많은 설정이 필요합니다. 이 6 개의 줄 대신에 보통 gruntfiles에는 약 300 줄의 코드가 있습니다. 실제로 더 유연하지만 더 간단한 도구를 사용하면 동일한 유연성을 얻을 수 있습니다. –

+0

@rallrall 나는 당신의 해결책을 시도 할 것이고, 그것이 실제로 그렇게 작동한다면 정확한 답을 표시 할 것입니다. 나는 내 컨트롤러 파일과 뷰를 각각 컴파일하도록 선택하면 설정 파일이 매우 장황해질 수 있다고 생각한다. –

+0

이 솔루션은 이상적이지 않지만 작동 할 수있다. 내가하고 싶은 것을 성취하기 위해서 컨트롤러, 뷰 및 템플릿의 각 파일을 나열해야합니다. 또한 브런치를 사용하면 만든 각 파일에 추가 된 스크립트가 많이 있습니다. 실제로 이것은 수십만 줄의 응용 프로그램 코드를 추가 한 것입니다. 다른 사람이이 솔루션을 수락하기 전에 더 잘 작동 할 수있는 솔루션을 제안하는지 확인할 수 있습니다. –

-1

질문 : "처음에는 주 경로를 시작하고 여는 데 필요한 것만으로로드되는 엠버 앱을 빌드하려고합니다. 다른 모든 컨트롤러, 템플릿 등 특정 경로가 트리거되면 느리게로드됩니다. "

Ember는 페이지가로드 될 때 필요한 정보가있을 것으로 예상합니다. 내가 틀리지는 않겠지 만 게으른 로딩은 Ember의 특징으로 보이지 않습니다. Ember CLI는 동일합니다. 과부하를 줄이기 위해 번들링과 축소를 사용합니다. 그러나 모든 것을 작동시켜야합니다.

대신 나 같은 사람들은 필요할 때만 물건을로드하고 싶습니다.

Ember에서 지연로드를 구현하려고하면 모든 것이 모듈 (file.js)로 표시되어야합니다. 경로, 모듈, 제어기, 모듈; 등등. 스키마 (예 : POD)를 따라야합니다.이 스키마에는 예상되는 위치를 찾기위한 메커니즘이 적용됩니다. 모든 모듈은 종속성을 알아야합니다. 그러나 그 중 일부는 매우 빈번합니다 (경로, 컨트롤러, 템플릿). 브라우저에 모듈 로더를 사용해야합니다. 그것은 당신이 원하거나 요구 사항 일 수 있습니다. 그러나 ES6가 문 앞에 있습니다. 그것에 대해 생각해 봅시다.

많은 사람들이 결과를 얻기 위해 beforeModel 후크를 사용합니다. 당신이 link-to 구성 요소를 사용하지 않으면 나는 그것을했고 작동합니다. 그렇지 않으면 모든 것이 충돌합니다. 왜? 때문에 href 계산 된 속성. link-to이 삽입되면 href이 계산됩니다. 이 때문에 Ember는 링크가 가리키는 경로를 찾습니다. 경로가없는 경우 route:basic에서 경로가 만들어집니다.

솔루션은 페이지에 삽입 된 모든 링크 대상이 나타내는 모든 경로의 사전로드 일 수 있습니다. 너무 비싸다!

이 답변에 통합 한 것은 https://github.com/ricottatosta/ember-wiz에서 봐, POD 구성 경로의 지연로드에 대한 초기 솔루션을 Lazy loading route definitions in Ember.js

에서 찾을 수 있습니다. ES6 기반 접근 방식으로 SystemJS를 모듈 로더로 릴레이합니다.

+0

외부 리소스에 대한 링크가 권장됩니다.하지만 링크 주위에 컨텍스트를 추가하여 동료 사용자가 그것이 무엇이며 왜 존재하는지 알 수 있도록하십시오. 대상 사이트에 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 중요한 링크의 가장 중요한 부분을 항상 인용하십시오. – davejal

관련 문제