2016-11-28 2 views
1

J'ai plutôt une grande application, maintenant environ 5mb pour app.js et 1mb + dans le vendeur js. Je suppose qu'il traversera 10mb, nos utilisateurs cibles sont sur Internet lent et chaque utilisateur a des droits différents de sorte que la plupart des composants ne sont pas disponibles pour un utilisateur.Comment personnaliser la construction de ember-cli pour exclure la concat de code source

Je pensais exclure certains gros composants du processus de construction et les charger à la demande. Jusqu'à présent, j'aimé cette idée https://github.com/Cryrivers/ember-remote-component/blob/master/app/components/remote-component.js où il vérifie si un composant est chargé, sinon puis les charger en utilisant AJAX

quelque chose comme

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

Je pense que cela peut fonctionner. Mais voici deux questions

A: Comment exclure un composant de processus de construction, et l'empêcher de concaténer mais aussi les garder à l'/dist/composants/abc/ dossier

B: Séparer compiler template.hbs à template.js pour ce composant en compilant le modèle après le chargement via AJAX provoquera d'énormes problèmes de performance.

Répondre

3

Ce n'est pas la solution exacte de l'OP cherche, mais je pense qu'il est une meilleure solution à long terme:

Je pense que les moteurs paresseux chargés pourraient être une meilleure façon d'aborder ce problème. https://github.com/dgeb/ember-engines

Vous pouvez empêcher la majorité de votre application de se charger pour la plupart des utilisateurs.

La prise en charge expérimentale du chargement paresseux est disponible dans la branche principale, conformément au fichier README du projet.

+0

Oui, merci, il a atterri dans 2.10 et j'espère dans la version 2.12 LTS. Je vais mettre à jour à moteur cette fois ... Merci –