个人感觉前端用模板引擎主要是为了减少字符串拼接,提高渲染速度(插值 循环 判断 缓存 部分更新),主要研究了Handlebars artTemplate nodetpl三个模板引擎
Handlebars
handlebars 的特点是兼容 Mustache 语法,多数情况下可以直接迁移,有一个颇有中间件感觉的 helpers 的方法,可以定制很多东西处。handlebars是个很不错的模版引擎,功能强大,但是比较重,如果项目颇大,对模版有较强的要求又不想用 ng 等框架的话,可以考虑。
nodetpl
与其他几乎所有模板引擎不同的是,nodetpl提倡 “高内聚”、“低耦合” 的开发模式,模板即是一个完全独立的模块,可以携带自身 css 及 js 用在任何地方而不受约束,这一点,其他模板引擎很难能够完美支持,这也是为什么国内许多大型互联网站点采用 nodetpl 作为模板引擎的原因。
artTemplate
模版就看你的需要了,大同小异,模版引擎的关键是执行速度吧,渲染的效率才是最重要的。不然还不如自己拼个html。。。对于执行速度,不得不提模板“编译速度”和“渲染速度”。市面上几个主流模板都支持将模板预编译,然后再渲染。 有一篇文章《高性能JavaScript模板引擎原理解析》,说artTemplate的速度达到理论极限
模板引擎间对比artTemplate相对比较有优势,小又快,目前我们项目也支持artTemplate使用。但vue自带模板引擎,而且能实现数据的双向绑定,Vue.js 的核心是一个响应的数据绑定系统,它让数据与 DOM 保持同步非常简单。
相对于我们的项目建议使用 模板字符串+vue1,在小型项目中可以使用es6的模板字符串,如模板字符串不能满足需求可使用vue1。vue2虽然提供了虚拟dom提升了页面的刷新速度,如果虚拟DOM可以一次性进行批量的修改是非常好的。但是如果是单独的、稀少的更新呢?这样的任何DOM更新都将会使虚拟DOM带来无意义的预计算。因此,如果某个项目只有较少数量的节点,那么使用虚拟DOM会带来速度上质的变化么?实际上更可能的是使其更慢了!
各个模板引擎下载地址:
baiduTemplate: http://baidufe.github.io/BaiduTemplate/
artTemplate: https://github.com/aui/artTemplate
juicer: http://juicer.name/或https://github.com/PaulGuo/Juicer/zipball/master#download
doT:doT source:https://github.com/olado/doT Docs:http://olado.github.com/doT/
tmpl:https://github.com/BorisMoore/jquery-tmpl
handlebars:http://handlebarsjs.com/或https://raw.github.com/wycats/handlebars.js/1.0.0-rc.4/dist/handlebars.js
easyTemplate:https://github.com/qitupstudios/easyTemplate
underscoretemplate: http://documentcloud.github.io/underscore/
mustache:https://github.com/janl/mustache.js
kissytemplate:https://github.com/ktmud/kissy