1

Velocity 構文を拡張する際のベスト プラクティスと見なされるもの。使用可能な 2 つのメカニズムは、ディレクティブとマクロです。どちらも同じようにパワフルに見えます。ディレクティブは Java コードの実際の開発を必要としますが、マクロは Velocity 構文の単なるスニペットです。

ディレクティブの利点は、ディレクティブが Java で記述されているため、マクロに含まれる追加の Velocity 構文を解析する必要がないことです。これにより、Velocity の拡張がより正式になり、多くの制御されていない追加が停止されます。

マクロのプラス面として、これは非常に柔軟であり、アプリケーションの開発中に共通のパターンが発見されるため、多くの再利用が可能になると思います。

ですから、この分野でのあなたの考えは大歓迎です。

4

1 に答える 1

2

実は3つ目の方法もあります。でもまず...

ディレクティブは、テンプレートのセクションに対して、またはテンプレートのセクションを使用して何かを行うためのもの、またはそれらの周りのテンプレートを認識する必要があるものです。たとえば、何らかの方法で囲まれたセクションの出力を変換するディレクティブを作成できます。そして、この機能的なテンプレート中心の動作を、グローバルで常時オンの方法で提供します。

マクロは関数として設計されていません。コンテンツやマークアップを繰り返すのに最適です。これらは、出力しているマークアップ言語 (またはその他のもの) を Java コードに入れたり、VTL のセクションを何度も繰り返したりしないようにするために作られています。

3 つ目の方法は「ツール」と呼ばれます。VelocityTools プロジェクトには、非常に簡単なツール管理のためのサポート コードは言うまでもなく、使用または例として使用できるこれらの多くがあります。とにかく、ツールは主にデータにアクセスしたり操作したりするためのものです。数値の書式設定を行うディレクティブまたはマクロを作成しないでください。ツールを使用します。ツールは、他の方法ではテンプレート内で使用するのが難しいライブラリや API への VTL フレンドリーなインターフェイスを提供します。ディレクティブやマクロでは不可能な方法で、アクセス制御とスコープを設定できます。

3 つすべてが、さまざまなことに非常に役立ちます。要するに:

  • ディレクティブは、AST またはテンプレート セクションの出力を操作するのに最適です。
  • マクロは、自分自身を繰り返したり、マークアップを Java コードに忍び込ませたりしないために最適です
  • ツールは、テンプレート内のデータにアクセスして操作するのに最適です
于 2012-05-24T16:59:46.733 に答える