请问前端开发有什么好的基于 HTML 模板引擎?
如题,想问问大家前端开发有什么好的基于 HTML 的模板引擎,可以组装,jade 使用过编译的时候经常出错,每次出错还要打开编译好的 html 文件,实在太麻烦,不熟悉语法的话项目开发时浪费大量时间,而且我是用前端神奇 sublime text 做开发,下了 Emmet 感觉还是纯 HTML 更熟悉更好用,而且不用理会编译中的出错,浏览器所见即所得。求教大家推荐几款基于 HTML 语言的模板引擎,不了解 EJS 和 Handlebars ,不知道这两个是不是基于 HTML 的模板引擎?
Answers
我也是jade,不过我是用jade开发的直接用gulp编译,上线的是直接编译好的HTML。错了会直接提示到某行,自动的,我感觉没有这么费劲。
在我看来,前端的模板会在3个场合用到。
- 开发的时候
- 上线的时候(服务端渲染)
- 上线的时候(浏览器渲染)
我属于第一种,所以选了jade。我之前也是一直用的emmet,说实话节约了一些时间,但很多问题还是没有解决。emmet让写dom的速度升级了,但没有让改dom的和看dom速度升级,特别是dom在一屏幕看不完的时候。
但对于每一个人都要分清场景再选择,小的模板underscore和lodash就可解决。如果你用了angular或者是react的框架,本身会有模板的功能。
HTML 是没有重用代码的机制的,如果页面由几个非常相似的部分组成,是没办法重用代码的,这是要用模板引擎的重要原因。
HTML 里面的冗余数据太多了(所以才有 Emmet),编辑比较复杂的 HTML 的时候很是麻烦,如果没有编辑器的语法检查,很难保证写出来的代码没有语法错误。当然,这一点是我的个人审美,也许有人认为 HTML 较 Jade 更清楚呢。我觉得这么认为的人可能是对 Jade 的了解还比较少(说起来 Jade 的官网只介绍了一小部分的语法,看完了觉得稀里糊涂也很正常),所以觉得没有熟悉的 HTML 清楚。
我是 Jade 的脑残粉,Jade 和 EJS/Handlebars 相比有一个重要区别,Jade 只能处理 HTML, 而 EJS/Handlebars 其实并不关心被处理的文本是不是 HTML. 因此 Jade 的语法略复杂,报错的原因更多,但 Jade 编译出来的一定是语法正确的 HTML.
我用 Jade 的时候都是直接在后端渲染,在前端使用 Jade 似乎不是一个好主意(因为 Jade 要比 Handlebars 之类的库大很多)。我一般是在后端用 Jade, 前端配合一个轻量级的模板引擎(jquery-tmpl):
script(id='members-template', type='text/x-jquery-tmpl')
header= t('ticket.members')
{{each members}}
a.pull-left
img.img-avatar(src='${$value.preferences.avatar_url}', alt='${$value.username}')
{{/each}}