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