2010-11-09 74 views
22

我試圖在Freemarker和Velocity之間做出決定,將其用作模板引擎,您可以看到每個優點和缺點?Freemarker vs. Velocity

任何替代品,我應該看看嗎?

+3

有人問,但這個人得到了更好的答案。 – Speck 2012-02-27 15:04:46

回答

35

Velocity和Freemarker都很有能力。不要爲選擇而痛苦。他們在設計背後有着相當不同的優先級,所以一旦超越了基本模板,他們的功能集很難進行比較。 Velocity的語法更簡單,更明確,Freemarker的重語法允許它們支持JSP庫。 Velocity通過附加項目(如VelocityTools)提供了更多的自由度和更多的功能。 Freemarker提供了更好的本地空白處理,最近的Velocity版本提供了更有趣的內容控制(#define,#evaluate,#[[literal block]]#)。

至於性能方面,Velocity近年來取得了很大的收益,除了最初的模板解析。但對於性能至關重要的任何理智的應用程序,您應該將這兩個引擎設置爲緩存模板並僅解析一次,從而減少了這個問題。一般來說,你會發現你使用任何一個引擎的表現都更依賴於模板的性質,而不是引擎之間的差異。

StringTemplate也很受歡迎,雖然它們是MVC納粹,並且無法匹配Velocity或Freemarker的功能。;)您的潛在失望程度比任何一種更受歡迎的模板引擎都要高一些,而這兩種模板引擎都不會令人失望。抓住一個,然後去。

+0

**「不要爲選擇而痛苦」**寫得很好! – Stephan 2018-01-09 11:38:58

8

我更喜歡FreeMarker。我喜歡這些文檔,我總能找到我需要的東西。總的來說,我只是覺得它非常強大。

String Template是另一種選擇。

+2

同樣,這個比較已經過時了,只比較了基本特性,忽略了Velocity的各種強大的附加項目。 Freemarker社區沒有相信他們沒有更新它。 – 2010-11-10 15:37:19

+0

@Nathan Bubna - 我在某個時候並沒有真正使用過速度,那個比較中究竟是什麼過時了? – Andy 2010-11-10 15:55:38

+0

大部分,我可以在這裏指出。它基於Velocity 1.2,就像9年前一樣。速度1.7正在測試中,並很快成爲決賽。它似乎也意味着像VelocityTools這樣的東西是「解決方法」,這不是一個公平的評估。 – 2010-11-11 18:02:52

2

freemarker項目頁面上有一個lengthy comparison

從來沒有與速度工作,我不能有意義地比較這兩個,但我對freemarker非常滿意,我看到沒有理由超越它。

+1

那麼長時間的比較對於Velocity 1.4來說可能是有效的,但是Velocity自那以後增加了很多。而且這種比較總是拒絕承認流行的VelocityTools項目的存在,該項目一直提供了豐富的功能。 – 2010-11-10 15:16:17

+1

更正,該比較對速度1.2有效。 Velocity現在支持其中大部分(儘管有時以不同方式實現),其餘大部分由VelocityTools支持。而一些「比較」則很奇怪。當我們輕鬆支持java函數時,Velocity不需要與Java無關的函數。 – 2010-11-11 18:10:30

+0

「冗長的比較」的鏈接已經失效 – domih 2015-12-09 09:13:42

5

它看起來像this是比較體面的破損。雖然,這是幾歲。

從文章:

總之

雙方的FreeMarker和Velocity是非常 能夠模板引擎。速度 似乎享有較大的用戶羣, 可能是由於它是 部分Apache項目。正如我在本文中顯示的 ,雖然, FreeMarker是更復雜的 和更快的兩個。在基本的 操作中,兩個模板引擎都是 幾乎相似,提供了一個易於理解的API。

Velocity和FreeMarker都是 很容易集成到 應用程序中,並在小模板上提供良好的性能 。在解析較大的模板時速度減慢 ,當您爲 項目選擇模板引擎時,您可能會考慮到 。

0

Freemarker無法在Android上運行。因此,我目前正在將我的項目轉換爲Velocity,以使其與移動設備兼容。