所以,這次我還是大致按照ejs的語法規(guī)范來實現(xiàn)Leopard。
下載與使用
這里是github地址,歡迎大家看完之后在issue里提建議與bug,同時也歡迎提PR。
大家也可以通過npm來下載Leopard:
$ npm install leopard-template
特性
目前而言,Leopard實現(xiàn)了以下功能點:
插值:包括文本插值與HTML插值
邏輯判斷:
if
與else
循環(huán):
for
循環(huán),可以用來循環(huán)輸出模板過濾器:支持在插值里加入過濾器,同時過濾器可以串聯(lián)使用。引擎內(nèi)置了兩個過濾器,
capitalize
與reverse
。Leopard同時支持自定義過濾器,可以使用Leopard.filter(filter, handler)
來全局注冊一個過濾器。在過濾器上,Leopard可能跟ejs的不太同,跟Vue的比較相似。
舉個栗子
var Leopard = require('leopard-template')
var leo = new Leopard()
var template = '<% if (isOk) { %>' +
'<span class=\"nickname\"><%= nickname | capitalize %></span>' +
'<% } else { %>' +
'<span class=\"realname\"><%= realname | capitalize %></span>' +
'<% } %>'
var html = leo.compile(conditions, {
isOk: false,
nickname: 'leo',
realname: 'leopard'
})
// html就是最終編譯成功的的html了,可以直接通過document的方法渲染到頁面上
性能
其實字符串模板引擎的性能大家都知道的,在現(xiàn)在的硬件條件下,幾乎可以說是非常快的。(飽受虛擬DOM服務(wù)端渲染性能上不去的孩子哭暈在廁所,鄙人的公司項目就是卡在了這里上不了線)
我做了一個簡單的benchmark,循環(huán)輸出50,000個li
耗時大概是在60ms左右。當然,Leopard現(xiàn)在還只支持將模板字符串解析編譯成HTML字符串,所以這里的循環(huán)輸出指的是字符串編譯這一環(huán)。
# benchmark
$ npm run benchmark
開源
雖然說是個造輪子的項目,而且長得跟ejs幾乎一毛一樣,所以也不太可能投入到生產(chǎn)環(huán)境中使用(再者說現(xiàn)在都用MVVM框架來開發(fā)項目),但是我還是希望能按照開源項目的規(guī)范來開發(fā)Leopard。我給Leopard寫了100%覆蓋率的測試用例,每次提交commit也是跑完測試之后通過了才提交,也是希望這個項目不會太水。
# unit test
$ npm run test
# coverage
$ npm run coverage
相關(guān)推薦:
Node.js模板引擎jade實例講解
php實現(xiàn)模板引擎功能的簡單示例
PHP設(shè)計模式之基于模板引擎的容器部署框架
以上就是一個簡單的HTML模板引擎的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!