TinyTemplate模板引擎火熱出爐,正式開源了~~~

涉水模板引擎領域,純屬不當心。
在此對如下人員表示強烈感謝與致敬:
@sub jetbrick做者
@sept
@webit webit做者
@羅格林 rythm做者
@閒.大賦 beetl做者
以及許許多多雖然沒有列出來,可是在我寫tinytemplate時幫助過個人人。 java

序言

原本是沒有本身寫一個模板引擎的計劃的,由於按個人理解,一直認爲這種「語言」級的引擎,難度是很是大的。總感受本身的水平不夠,所以不敢有這個念頭。直到大量使用Velocty的時候,碰到velocty諸多不盡如人意的地方,可是又無能爲力,退回到JSP吧,又心不有甘。因而就指望着尋找一種語法結構接近velocty,可是又沒有Velocity這些不方便之處的模板語言。因而進到一個模板語言羣,一羣大佬們個個至少是一個模板語言的做者,因而做者在裏面表達了本身的指望,大佬們都介紹了本身的模板引擎,因而做者一個接一個的看源碼,看文檔。說實際,看文檔,感受都很是不錯,都有本身的特點,看語法也都不錯,除了一部分本身特別關注的點沒有以外,其餘部分都很是不錯了。可是距離本身的訴求仍是有差距,怎麼辦呢?因而就準備找一個最接近的模板引擎來進行必定的擴展,挑來挑去就挑中了jetbrick這個模板語言。 git

之因此挑中這個是由於如下幾個緣由: web

  1. Antlr詞法及語法文件編寫很是清晰,對於我這種Antlr盲來講,也能夠看得懂,甚至能夠照葫蘆畫瓢修改修改,這個很是重要,在後期進行許當的語法改進,這個就體現出優勢了
  2. 代碼質量較好,使用sonar進行進行分析,給的結果都仍是至關不錯的,在做者看過的全部的模板語言中,算上成之選
  3. 語法結構與Velocity的很是接近,這點對我也很是重要,由於個人想法就是velocity語法有至關的接受度,與Velocity語法接近,velocity的一些使用者能夠方便的進行切換
  4. 測試用例比較完善,在Tiny模板引擎完成以後,利用其測試用例進行測試發現了好幾個BUG,說明仍是很是有效果的
  5. 環境搭建容易,直接下載源碼,就能夠安裝成功,能夠跑測試用例

好的,挑也挑了,選也選了,就開始編寫TinyTemplate了,let's GO。 緩存

三天時間初步寫好,又花了一週時間進行完善、測試、文檔,因而就有了同窗們看到的TinyTemplate 框架

概述

Tiny模板引擎 是一個基於Java技術構建的模板引擎,它具備體量小、性能高和擴展易的特色。 適合於全部經過文本模板生成文本類型內容的場景,如:XML、源文件、HTML等等,能夠說,它的出現就是爲了替換Velocity模板引擎而來,所以在指令集上在儘可能與Velocity接近的同時,又擴展了一些Velocity不能很好解決問題的指令與功能,在表達多方面則儘可能與java保持一致,因此很是的易學易用。 函數

  1. 體量小表如今總共不到4000行的代碼,去掉解析器近1000行,核心引擎只有不行3000行代碼
  2. 性能高表如今與如今國內幾款高性能模板引擎如:Jetbrick、webit等引擎的性能相比,近乎伯仲之間,可是比Velocity、Freemarker等則有長足的進步,效率大體是Velocity四倍
  3. 擴展性表如今Tiny框架引擎的全部環境均可以自行擴展,並與原有體系進行良好統一
  4. 易學習表如今Tiny框架概念清晰、模塊劃分科學、具備很是高的高內聚及低耦合
  5. 使用方式靈活表如今,能夠多例方式、單例方式,並能夠與Spring等有良好集成

簡要特色介紹 佈局

  • 相似於 Velocity 的指令方式,相同或類似指令達90%左右
  • 支持靜態編譯
  • 支持編譯緩存
  • 支持熱加載
  • 支持可變參數方法調用
  • 支持類成員方法重載
  • 支持函數擴展
  • 採用弱類型方式,對於模板層的代碼編寫約束更小,模型層怎樣變化,模板層的代碼調整都很是容易
  • 支持宏定義 #macro
  • 支持佈局 Layout

性能

Tiny模板引擎採用編譯方式,執行,所以比Velocity、FreeMarker等第一代模板引擎都快得多。可是因爲使用了弱類型的方式,較強類型會稍慢一點,5%左右的性能差別,能夠忽略不計。 性能

上述數據在同一臺計算機上測得。 學習

與其它模板引擎比較

模板引擎名稱 性能
功能
Velocity 4+倍 Velocity有的功能,所有支持,且作了大量擴展的新功能
FreeMarker 5+倍 說實際用得不是太多,因此功能方面就不便說了,理論上確定多許多功能
Jetbrick 性能略弱之3%左右 Tiny採用弱類型,Jetbrick採用強類型;Jetbrick的附加功能函數比較多,Tiny則擴展出一些新的功能,Tiny是在學習Jetbrick基礎之上搞的。
HTTL 性能略弱之1%左右 Tiny採用弱類型,HTTL採用強類型;功能方面Tiny擴充許多彌補Velocity不足的功能。
BEETL 性能大體是其1.9倍左右 功能方面Tiny模板引擎天然會強,可是其市場應用狀況較好,基礎功能提供得比較多。
其餘幾種 性能對比看上圖 功能方面沒有深刻了解,所以沒法評判。

目前TinyTemplate的健壯度還不夠好,正在進行測試中。 測試

文檔地址:

開發環境搭建:

先下載Tiny基礎工程並安裝之:

https://git.oschina.net/tinyframework/tiny

若是在install過程當中有問題,請對比FAQ修改

http://my.oschina.net/tinyframework/blog/206718

源碼地址:

http://git.oschina.net/tinyframework/tiny

相關文章
相關標籤/搜索