簡體   English   中英

為什么人們使用Velocity和/或NVelocity?

[英]Why do people use Velocity and/or NVelocity?

在過去的一年里,我聽到很多關於Velocity和NVelocity的消息。 閱讀他們的文檔並在網上搜索並沒有給我我想要的答案。

在什么情況下我會在開發中使用這個庫? 它解決了哪些問題尚未解決?

自Web應用程序誕生以來,人們開始考慮在許多應用程序中分離關注點,包括Web應用程序。 挑戰在於將視圖代碼與業務代碼或邏輯代碼分開。 當jsps第一次到達時,許多人直接在jsps中編寫大量邏輯(比如db訪問等),打破了關注點分離的基本原則(jsps應該負責表示,而不是邏輯)。

Velocity,Freemarker和其他模板引擎可以分離UI邏輯和業務邏輯,從而促進演示中的更改,同時最大限度地減少業務方面的變化。 這些模板引擎具有執行常見UI任務的功能,例如,如果某些條件成立,則顯示html塊,或者在保持邏輯代碼在視圖外部的同時迭代列表。 這對於長期維護復雜的應用程序至關重要。

我認為重要的是要指出,與作為模板機制的JSP / ASP.NET相比,Velocity / NVelocity確實“ENFORCE”關注的分離。

使用JSP / ASP.NET的<%..%>,允許任何Java / .NET代碼。 這就是為什么有時你會看到這些文件中的業務邏輯代碼。

使用Velocity / NVelocity,您無法嵌入很長的代碼系列。 相反,你真的被迫傳遞計算值,Velocity / NVelocity選擇並根據模板的設計方式顯示它們。

另一點是他們可以在Web容器環境之外工作(至少Velocity可以AFAIK)。 想象一下,您已經使用JSP / ASP.NET設計了一個報告模板。 它在網上運行良好。 然后突然有一個更改請求要從桌面應用程序完成。 您可以初始化Velocity / NVelocity,計算值,然后渲染模板,而不是在其中嵌入Web容器。

這是一個模板引擎。 如果您有大量混合了可變內容的靜態文本,那么模板是減少您必須完成的工作量的好方法。 它比String.Format或連接加載要好得多,因為它不像重復或容易出錯,並且更易於維護,因為你可以通過查看它來確切地弄清楚模板的功能。

1 - Velocity引擎實際上將實時數據與保存靜態信息xyz.vm文件合並
2 - vm文件使用Velocity模板語言(VTL) (它可以迭代放置在上下文中的java可迭代java對象,可以調用放置在上下文中的對象可訪問的方法)

使用Velocity的情況 -
1 - 當您必須生成具有不同數據和常量樣式的報告郵件時(foreach支持)
2 - 當您想要在深層嵌套的內容中將實時數據與虛擬的Place-Holder合並時
3 - 當你想根據數據的價值決定風格信息時(如果支持的話)
還有很多
請參閱 - http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html

我們使用模板生成配置文件,用於生產,UAT,系統測試,應急系統等。

我們有一個主Spring配置文件,我們在其中注入一個屬性文件。 我們有一個由Velocity解析的主屬性文件,這允許我們將所有系統設置保存在一個文件中。

作為獎勵,對於感興趣的人,我建議閱讀以下內容:

這些是關於StringTemplate的鏈接,這是一個由Terence Parr編寫的模板引擎,后者編寫了antlr,一個在任何地方都使用的解析器(例如:hibernate使用antlr)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM