模板引擎 Lite
Lite 縮寫自List Template,是一個由簡單的控制指令集和一個表達式解析引擎組成的簡單模板引擎。 模板語言所解析的中間格式,由數組、字符串、和整數三種數據類型組成。數組就是這里唯一的復合類型,于是,我采用List Template來命名這個模板引擎。List 和Template各取兩個首字母,組成Lite這個單詞。
用戶不能直接編寫控制指令,如同java程序員不能直接編寫字節碼一樣,Lite需要一種真正的源代碼格式。理論上,通過這些控制指令和自定義表達式函數,我們可以支持任何模板語法翻譯為Lite能解釋的中間代碼。
如CLR需要C#,C++.net,java byte code需要Java語法; Lite提供一種XML源代碼語法,作為Lite的默認源代碼格式。
Lite的運行效率,是非常出眾的,高于Velocity和FreeMarker一半以上。 但是對于一些表達式的計算,因為JSEL腳本和JavaScript規則的兼容性要求,以及弱類型自動轉換的特征,性能不及強類型的velocity。介 于Velocity和FreeMarker之間。
js版本運行時比jst快大約兩倍,如果算 上編譯時間(lite不在運行時編譯),不在一個數量級上,沒有比較。
python版本比 django模板快四倍左右!
php版本的性能較差,估計主要事php函數調用開銷的問題, 相比smarty這個編譯成最終php的模板實現來說,在asciitable打印測試中,單進程內一次運行要慢smarty3.5倍(通常web頁面的 渲染模式),如果單進程重復運行1000次(現實環境中不太可能發生),可能是因為php文件的解析緩存,要慢smarty9倍(查看詳細數據),而且如果php使用編譯緩存加速,這個差距還會進一步加大。以后考慮將采用類似lite4js那 樣編譯成最終代碼的方式,或者直接編寫php擴展。
幾個Java模板引擎的測試結果比較見:http://code.google.com/p/templatetest/wiki/Velocity_CommonTemplate_XMLTemplate_Compare