對比
模板語言之間其實大同小異,尤其是JS模板龙助,不管是 Mustache 還是 jQuery Template 還是 Dust.js,它們之間核心邏輯的近似程度堪比被吐槽為“兩個完全一樣的東西”的 sass 和 less 蛛芥。而這幾個時興的JS模板相比比較老的 Smarty 等模板語言提鸟,我認(rèn)為有下面幾點優(yōu)勢:
簡單易學(xué)
Mustache 對于初學(xué)模板語言的人來說上手非尘快,同時功能上不弱于傳統(tǒng)的模板語言称勋。
為了說明這一點胸哥,不如比較一下:
Mustache 的指南:http://mustache.github.com/mustache.5.html
Smarty長長的文檔列表:http://www.smarty.net/docs/en/
Smarty 的文檔頁面里只列了鏈接,就比 Mustache 連說明帶例子的指南要長的多了……
離結(jié)構(gòu)化的數(shù)據(jù)更近
拿官方的例子來看:
Smarty 要單獨對變量做賦值赡鲜,類似程序輸出:
{assign "name" "Bob"} //賦值
{assign "age" "18"} //賦值
His name is {$name}. He is {$age}. //模板
結(jié)果:
His name is Bob. He is 18.
Mustache是直接傳入json格式的數(shù)據(jù) 數(shù)據(jù)
{
"name": "Chris",
"value": 10000
}
模板
Hello {{name}}
You have just won ${{value}}!
結(jié)果
Hello Chris
You have just won $10000!
總結(jié)
上帝的歸上帝空厌,凱撒的歸凱撒 Mustache 的 slogan 是 Logic-less templates. 我覺得這是一個很好的概括,模板語言就應(yīng)該只負(fù)責(zé)結(jié)構(gòu)的輸出银酬,邏輯上的東西應(yīng)當(dāng)交給別的地方來做嘲更。這也是新的模板語言對舊有模板中的不足的認(rèn)識和總結(jié)吧。