J'ai trouvé le même problème. Quand le code devient plus gros, il est difficile de garder le code propre.
Voici mon approche de ce problème :
Je sépare les différentes pages html comme je le ferais avec un autre framework web. Il existe un index.html
où je stocke la page html racine. Ensuite, pour chaque grande partie fonctionnelle, je crée un modèle différent et le place dans une page html différente. Meteor les fusionne ensuite tous. Enfin, je crée une variable de session appelée operation
où je définis ce qu'il faut montrer à chaque moment.
Voici un exemple simple
index.html
<head>
<title>My app name</title>
</head>
<body>
{{> splash}}
{{> user}}
{{> debates}}
</body>
alors dans splash.html
<template name="splash">
{{#if showSplash}}
... your splash html code goes here...
{{/if}}
</template>
alors dans utilisateur.html
<template name="user">
{{#if showUser}}
... your user html code goes here...
{{/if}}
</template>
et ainsi de suite ...
Dans le code javascript, je vérifie ensuite quand imprimer chaque modèle en utilisant la variable Session, comme ceci :
Template.splash.showSplash = function(){
return Session.get("operation") == 'showSplash';
}
Enfin, le routeur dorsal gère cette variable de session.
var DebateRouter = Backbone.Router.extend({
routes: {
"": "showSplash",
"user/:userId": "showUser",
"showDebates": "showDebates",
// ...
},
splash: function () {
Session.set('operation', 'showSplash');
this.navigate('/');
},
user: function (userId) {
Session.set('operation', 'showUser');
this.navigate('user/'+userId);
},
// etc...
});
J'espère que ce modèle sera utile aux autres développeurs Meteor.