論理のないテンプレートの背後にある概念を理解しようとしていますが、壁にぶつかっています。
すべてのページの上部にある「ホーム、概要、連絡先」リンクなど、単純なナビゲーションバーを実装したいのですが、「現在の」リンクは別のクラスで強調表示する必要があります(ブートストラップを使用しています)。しかし、どうすればこれを賢明な方法で行うことができますか? これまでのところ、私は持っています:
- ナビゲーションをすべてのテンプレートに移動し、全体をコピーします (DRY ではなく、醜い)。
- 値の代わりにキーを使用
render('home', { on_home_page: true });
します<a href="/" {{#on_home_page}}class="active"{{/on_home_page}}>Home</a>
。これは優れていますが、1 変数分のデータを保持するために N 個の変数を作成する必要があることは依然として厄介です。 - コントローラーでナビゲーションを作成します。つまり、パスイン
{ 'Home': {link: '/', active: false}, 'About: {link: '/about', active: true} }
などです。ロジックのないテンプレートとは逆の問題があるため、これは嫌いです。今、私はHTMLフルコントローラーを持っています...
上記の選択肢を考えると、私は (2) が一番好きです。しかし、私が好むのは、次のような単一の変数をチェックする方法です。
// controller
render('about', {active: 'about'});
render('home', {active: 'home'});
// mustache nav
<a href="/" {{#if active == 'home'}}class="active"{{/if}}>Home</a>
<a href="/about" {{#if active == 'about'}}class="active"{{/if}}>About</a>
これは口ひげの専門家にとって常に出てくると思います---それに対処する最善の方法は何ですか?