2016-11-28 11 views
1

私はむしろ大きなアプリケーションを持っています。今はapp.jsで約5MB、ベンダーjsで1MB +です。私はそれが10メガバイトを越えると仮定し、目標ユーザーは低速インターネット上にあり、各ユーザーは異なる権限を持ち、ほとんどのコンポーネントはユーザーに利用できない。ソースコードの連結を除外するember-cliビルドをカスタマイズする方法

ビルドプロセスから大きなコンポーネントを除外し、必要に応じてロードすることを考えていました。その後、AJAX

私はこれが動作することができると思う

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); 
    }) 
} 

のようなものを使用してそれらをロードしない場合はこれまでのところ私は、コンポーネントがロードされている場合、それはチェックこのアイデアhttps://github.com/Cryrivers/ember-remote-component/blob/master/app/components/remote-component.jsが好きでした。:ビルドプロセスからコンポーネントを除外し、連結からそれを止めるだけでなく、/DIST /コンポーネント/ ABC/フォルダ

Bでそれらを保つためにどのように:しかし、ここでは二つの質問

Aは、 AJAXを介してロードした後にテンプレートをコンパイルすると、そのコンポーネントのtemplate.hをtemplate.jsにコンパイルすると、パフォーマンス上の大きな問題が発生します。

答えて

3

これはOPが探している正確なソリューションではありませんが、私はそれがより良い長期的な解決策だと思う:

私は怠惰なロードされたエンジンは、この問題にアプローチするより良い方法かもしれないと思います。 https://github.com/dgeb/ember-engines

大部分のアプリが大部分のユーザーに読み込まれるのを防ぐことができます。

レイジーロードの実験的なサポートは、プロジェクトのREADMEに従ってマスターブランチで利用できます。

+0

はい、感謝しました2.10とうまくいけば2.12 LTS版に着いた。私はその時にエンジンに更新します...ありがとう –

関連する問題