2

Require.js とテキスト プラグインを使用しています。次のようなテンプレートを作成しようとしています。

<%= somefunction(displayvalue) %>

複数のテンプレートで使用できるようにするには、 somefunction(...) が必要です。複数の場所で使用する関数をラップする最良の方法は? モジュールにしようと思ったのですが、テンプレートに渡す方法がわかりません。

4

1 に答える 1

4

テンプレートをコンパイルした後、呼び出す関数があることに気づき、いくつかの引数を渡します。したがって、関数を引数として渡すだけです。

var tpl = _.template( tplString );
tpl({ someFunction: function( val ) { /* do something */ } });

ただし、テンプレート データ内でのみ値を渡す方がよいと思います。テンプレートは、ロジックがほとんどない場合、実際にはデバッグと保守がはるかに簡単です。したがって、代わりに、次のようにします。

tpl({ someValue: someFunction( aValue ) });

他の JavaScript テンプレート エンジン (Handlebars など) では、テンプレート データに対してアクションを実行するためにほとんどグローバルに使用できるヘルパー関数を実際に登録できます。複数のテンプレート内で同じ関数を本当に使用する必要がある場合は、テンプレート エンジンを切り替えることを検討します。アンダースコアはマイクロテンプレートエンジンを提供するため、ヘルパー関数の周りに何らかの制限がありますが、あまりにも多くのロジックを含めることができます...

私の意見では、アンダースコア テンプレートは小さなプロジェクトに適しているため、慎重に使用する必要があります。それらをできるだけ単純にしてください: if/else、印刷データ、それだけです。さらに必要な場合は、より完全なテンプレート エンジンを使用してください。

しかし、それでも、テンプレート内で行うすべてのロジックはデバッグが困難です。

そう!複雑にしないでおく。

于 2012-11-06T03:57:58.250 に答える