2013-02-19 3 views
2

De https://github.com/ccoenraets/backbone-jax-cellar/blob/master/WebContent/js/utils.js:modèles Backbone dans la production

tpl = { 

// Hash of preloaded templates for the app 
templates: {}, 

// Recursively pre-load all the templates for the app. 
// This implementation should be changed in a production environment. All the template files should be 
// concatenated in a single file. 
loadTemplates: function(names, callback) { 

    var that = this; 

    var loadTemplate = function(index) { 
     var name = names[index]; 
     console.log('Loading template: ' + name); 
     $.get('tpl/' + name + '.html', function(data) { 
      that.templates[name] = data; 
      index++; 
      if (index < names.length) { 
       loadTemplate(index); 
      } else { 
       callback(); 
      } 
     }); 
    } 

    loadTemplate(0); 
}, 

// Get template by name from hash of preloaded templates 
get: function(name) { 
    return this.templates[name]; 
} 
}; 

dois-je faire quelque chose comme

$.get('tpl/all-tpls.html', function(data) { } 

pour obtenir tous les modèles html? Cela ne serait-il pas inutile d'aller chercher un tas de html? Notre application est en cours de construction en Java et nous utilisons https://github.com/samaxes/minify-maven-plugin pour réduire et combiner nos fichiers js et css. Toute direction serait appréciée.

+1

Java ** n'est pas ** JavaScript –

+0

Notre moteur fonctionne sur Java. – Meistro

+0

Encore, cette question appartient à JavaScript. Si vous utilisez Java sur votre serveur, c'est bon pour vous! mais cela ne fait pas du tout une question Java. –

Répondre

3

Réponse courte: Oui. Vous devez charger tous les modèles initialement sur le chargement de l'application afin qu'ils soient disponibles. En production, ceci peut être combiné avec le fait de servir des en-têtes d'expiration à long terme corrects, de sorte que les modèles soient mis en cache pour l'utilisateur entre les visites (c'est-à-dire 1 an). Vous pouvez ensuite le buste du cache à l'aide d'une chaîne de requête, quelque chose comme tpl/all-tpls.html?v=001

réponse plus longue:

Pour des raisons de performance, vous voulez plus susceptibles de viser à réduire le temps de chargement et le nombre de demandes, autant que possible . Cela aidera également l'application à se sentir plus réactive, s'il y a moins de retard lors du chargement d'une nouvelle section si le modèle est déjà disponible.

La combinaison de vos modèles et leur mise en cache seront efficaces jusqu'à ce que votre application devienne très volumineuse. À ce stade, vous pouvez souhaiter décomposer le chargement, par exemple en groupes basés sur les sections de votre application. Cependant, considérez ceci comme une optimisation des performances du cycle de vie - ne pré-optimisez pas juste pour le plaisir.

+1

Mieux encore serait de précompiler les modèles en Javascript et le servir concaténé avec le reste de l'application. –

Questions connexes