对比
模板语言之间其实大同小异,尤其是JS模板,不管是 Mustache 还是 jQuery Template 还是 Dust.js,它们之间核心逻辑的近似程度堪比被吐槽为“两个完全一样的东西”的 sass 和 less 。而这几个时兴的JS模板相比比较老的 Smarty 等模板语言,我认为有下面几点优势:
简单易学
Mustache 对于初学模板语言的人来说上手非常快,同时功能上不弱于传统的模板语言。
为了说明这一点,不如比较一下:
Mustache 的指南:http://mustache.github.com/mustache.5.html
Smarty长长的文档列表:http://www.smarty.net/docs/en/
Smarty 的文档页面里只列了链接,就比 Mustache 连说明带例子的指南要长的多了……
离结构化的数据更近
拿官方的例子来看:
Smarty 要单独对变量做赋值,类似程序输出:
{assign "name" "Bob"} //赋值
{assign "age" "18"} //赋值
His name is {$name}. He is {$age}. //模板
结果:
His name is Bob. He is 18.
Mustache是直接传入json格式的数据 数据
{
"name": "Chris",
"value": 10000
}
模板
Hello {{name}}
You have just won ${{value}}!
结果
Hello Chris
You have just won $10000!
总结
上帝的归上帝,凯撒的归凯撒 Mustache 的 slogan 是 Logic-less templates. 我觉得这是一个很好的概括,模板语言就应该只负责结构的输出,逻辑上的东西应当交给别的地方来做。这也是新的模板语言对旧有模板中的不足的认识和总结吧。