4

バックボーンアプリケーションにアンダースコアテンプレートエンジンを使用しています。現在、に15を超えるテンプレートがあり<head>ます。維持するのが難しくなっています。これまでのところ、テンプレートを管理するために私が見たソリューションのほとんどは、それらをjsファイルにする必要がありました。これも頭痛の種です。編集用のhtmlファイルにすることをお勧めします。

私はrequirejsを調べましたが、それが必要かどうかはわかりません。これは、現在使用しているとは言えない、よりモジュール化されたアプローチを中心に展開しているためです(間もなく使用します)。

テンプレートを管理し、必要に応じてそれらをロード/キャッシュするための最良の方法は何でしょうか?

4

2 に答える 2

5

個人的には、私の会社で堅牢なソリューションが必要だったので、次のようにしました。

  • Require.js-モジュールの読み込み用
  • ハンドルバー-アンダースコアが提供できるよりも強力なテンプレート用
  • HBS-コンパイルされたテンプレートをRequire経由で取り込むことを処理するAlexSextonの優れたrequireプラグイン

この設定では、すべてのテンプレートを独自のファイルに保存して、それらを使用するために次のようなファイルを作成できます。

define(['template!path/to/someTemplate'], function(someTemplate) {
    var MyNewView = BaseView.extend({template: someTemplate});
    $('body').append(new MyNewView().render().el);
}

(ご想像のとおり、ビューのテンプレートプロパティを使用してビューをレンダリングするBaseViewと呼ばれるベースバックボーンビューがあります)。

さて、そうは言っても、そのような堅牢なセットアップが必要ない場合は、Requireは適切ではない可能性があります。その場合、私は次のことを行います。

  1. すべてのテンプレートを1つ以上のHTMLファイルに入れます。次のように、スクリプトタグでそれらをラップします。

    <script id="dummyTemplate" type='text/template'>
    <span>I'm a template!</span>
    </script>
    
  2. サーバー側でコードを記述して、クライアントに送信するメインHTMLファイルにそれらのHTMLファイルを含めます。

  3. テンプレートIDを受け取り、その要素のテキストを取得し、それをテンプレートにコンパイルして、そのテンプレートを返す関数を記述します(必要に応じて、コンパイルされたテンプレートをキャッシュすることもできます...もちろん、アンダースコアテンプレートを使用するとは思いませんコンパイルする必要があるので、すべてスキップできます)。

  4. 関数を使用してテンプレートにアクセスします。$("#something").html(templateFunc('dummyTemplate').template())

これにより、テンプレートをhtmlファイル(構文の色付け用)に保存できますが、JSで便利にアクセスできます。テンプレートを取り込むためのインクルードロジックを記述できる限り、テンプレートを必要な数のファイルに分割することもできます。

ただし、Requireを選択した場合は、HBSプラグインを確認してください。また、Handlebarsテンプレートをまだ見ていない場合は、次のことをお勧めします。それらはアンダースコアのものよりもはるかに強力です(ただし、他の優れたテンプレートシステムと同様に、あまり多くのロジックを許可しないでください)。

于 2012-12-21T22:20:20.323 に答える
0

メンテナンス不可能であるとはどういう意味かわかりません。それはただの長いリストですか?

テンプレートを頭に入れておく必要はありません。彼らはあなたの体の底にもあることができます。それらを使用する前に、それらを定義する必要があります。

使用しているサーバーテクノロジに応じて、テンプレートを別のHTMLファイルに分割し、実行時に含めることを検討してください。

于 2012-12-21T22:17:55.647 に答える