過去1年間、私はVelocityとNVelocityについて多くのことを聞きました。彼らのドキュメントを読んだり、ネットで検索したりしても、私が探していた答えは得られませんでした。
このライブラリを開発に使用するのはどのような状況ですか?まだ解決策がなかったのに、どのような問題を解決しますか?
過去1年間、私はVelocityとNVelocityについて多くのことを聞きました。彼らのドキュメントを読んだり、ネットで検索したりしても、私が探していた答えは得られませんでした。
このライブラリを開発に使用するのはどのような状況ですか?まだ解決策がなかったのに、どのような問題を解決しますか?
Web アプリケーションの黎明期以来、人々は Web アプリケーションを含む多くのアプリケーションで懸念事項の分離について考え始めました。課題は、ビュー コードとビジネス コード (ロジック コード) を分離することです。jsps が最初に登場したとき、多くの人が jsps で直接多くのロジック (db アクセスなど) をコーディングし、関心の分離の基本原則を破っていました(jsps はロジックではなくプレゼンテーションに責任を持つべきです)。
Velocity、Freemarker などは、UI ロジックとビジネス ロジックの分離を可能にするテンプレート エンジンであり、ビジネス側の変更を最小限に抑えながら、プレゼンテーションの変更を容易にします。これらのテンプレート エンジンには、いくつかの条件が true の場合に html のブロックを表示したり、ビューの外でロジック コードを維持しながらリストを反復処理したりするなど、一般的な UI タスクを実行するための機能があります。これは、複雑なアプリケーションを長期的に維持するための基本です。
テンプレート メカニズムとしての JSP/ASP.NET と比較して、Velocity/NVelocity は関心の分離を実際に「強化」していることを指摘することが重要だと思います。
JSP/ASP.NET の <% .. %> では、任意の Java/.NET コードが許可されます。そのため、これらのファイルにビジネス ロジック コードが含まれていることがあります。
Velocity/NVelocity では、長い一連のコードを埋め込むことはできません。代わりに、Velocity/NVelocity が取得し、テンプレートの設計方法に従って表示する、計算された値を渡す必要があります。
もう 1 つのポイントは、Web コンテナー環境の外で作業できることです (少なくとも Velocity は私の知る限り)。JSP/ASP.NET を使用してレポート テンプレートを設計したとします。Webからは問題なく動作します。そして突然、デスクトップ アプリケーションから変更を行うように要求されました。その中に Web コンテナーを埋め込むのではなく、Velocity/NVelocity を初期化し、値を計算してから、テンプレートをレンダリングすることができます。
テンプレートエンジンです。可変コンテンツが混在する静的テキストが多数ある場合、テンプレートは、必要な作業量を削減する優れた方法です。String.Format や大量の連結よりもはるかに優れています。反復やエラーが発生しにくく、テンプレートを見るだけでテンプレートの動作を正確に把握できるため、はるかに保守しやすいからです。
おまけとして、興味のある人には、以下を読むことをお勧めします。
これらは、あらゆる場所で使用されているパーサーである antlr を作成した Terence Parr によるテンプレート エンジンである StringTemplate に関するリンクです (例: hibernate は antlr を使用します)。
テンプレートを使用して、本番、UAT、システム テスト、緊急時対応システムなどの構成ファイルを生成します。
プロパティファイルを挿入するマスターSpring構成ファイルがあります。Velocity によって解析されるマスター プロパティ ファイルがあり、これにより、すべてのシステム設定を 1 つのファイルに保持できます。
1 - Velocity エンジンは実際にリアルタイム データを静的情報xyz.vm
を保持するファイルとマージします2 - vm ファイルは Velocity Template Language(VTL) を使用します
(コンテキストに配置された Java 反復可能な Java オブジェクトを反復処理でき、アクセス可能なメソッドを呼び出すことができますコンテキストに配置されたオブジェクトによって) Velocity を使用する状況 - java のパワーを htmlだけでなく html にももたらします
。深くネストされたコンテンツでリアルタイム データをダミー プレースホルダーとマージする
3-データの値に基づいてスタイル情報を決定する場合 (他にサポートされている場合)
その他多数
参照 - http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html