私は同じ問題を見つけました。コードが大きくなると、コードをクリーンに保つことが困難になります。
この問題への私のアプローチは次のとおりです。
別のWebフレームワークの場合と同じように、さまざまなhtmlページを分離します。index.html
ルートのhtmlページを保存する場所があります。次に、大きな機能部分ごとに異なるテンプレートを作成し、それを1つの異なるhtmlに配置します。その後、Meteorはそれらすべてをマージします。最後にoperation
、毎回何を表示するかを定義する場所というセッション変数を作成します。
ここに簡単な例があります
index.html
<head>
<title>My app name</title>
</head>
<body>
{{> splash}}
{{> user}}
{{> debates}}
</body>
次にsplash.htmlで
<template name="splash">
{{#if showSplash}}
... your splash html code goes here...
{{/if}}
</template>
次にuser.htmlで
<template name="user">
{{#if showUser}}
... your user html code goes here...
{{/if}}
</template>
等々 ...
次に、javascriptコードで、次のように、Session変数を使用して各テンプレートを印刷するタイミングを確認します。
Template.splash.showSplash = function(){
return Session.get("operation") == 'showSplash';
}
最後に、バックボーンルーターがこのセッション変数を管理します
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...
});
このパターンが他のMeteor開発者に役立つことを願っています。