轩枫阁

首页 / 授人以渔 / Javascript / Ejs与Jade如何选择–NodeJs模版引擎比较

Ejs与Jade如何选择–NodeJs模版引擎比较

前言

前段时间的项目有用到NodeJs,而比较主流的模版引擎当属Ejs与Jade,该如何选择呢?各自又有什么优缺点?

EJS 结构更像原生 HTML,而 Jade 更简洁。你使用其中之一,是出于什么原因呢?看一看知乎上大家的讨论。

赞同Jade

1. 点评1

Jade有两点是超出传统模板技术的。

第一、简洁。

注意,简洁并非单指更少的符号,而是看是否能match你的需要。Jade强制的缩进格式能凸显html的结构,而对于前端来说,最重要的任务恰恰是处理结构,而不像一般的html author那样是处理内容。反过来说,假如你的主要任务是处理内容,比如写作blog之类的,那你应该用wiki或者markdown之类的,而不应该用Jade。

第二、html-aware

传统模板技术其实是通用模板,即模板引擎并不care你输出的是html还是其他格式的文本。而Jade专为HTML设计,因此可以做许多传统模板做不到的专门针对html的优化。举个几个简单的例子:

  1.  决定如何输出属性(当属性赋值为null/false时不输出属性,为true时只需属性不需要值,这在传统模板里写起来很麻烦、代码难看易出错)
  2. 自动产生well-formed结构(甚至可决定是否要输出结束标签,而传统模板理论上也做不到这点,除非引入额外的html parse或tidy)
  3. 换行处理,避免产生额外的空白节点
  4. 对输出的变量自动进行特殊字符的encode

当然,这些ejs或传统模板也有能实现的,但是用起来感觉都很挫。

2. 点评2

在我团队中,多数人倾向EJS,因为容易上手。而我们最终选择的JADE,原因只是因为expressjs默认JADE。github有句话,follow牛逼的人。

如果你的render是server side而且没有什么流量,随便那个都好。但如果你是重客户端,目标用户规模是QQ空间那样的,JADE的简洁就很重要了。

另外有HTML2JADE的可以帮你省事。github.com/donpark/html

3. 点评3

刚开始为追求极简,在众多模板中选用了jade,写起来和维护起来都很爽。

4. 点评4

用过jade和ejs

如果写程序和做HTML是同一个人的情况下,建议jade,可以少写很多代码;

如果布局多用table之类的,建议ejs,填充数据就行了;

如果有专门的UE,建议ejs,你吃饱了才去htmltojade。

效率上应该差不了多少,jade有的东西实现起来有点饶了。

支持Ejs

1. 点评1

为嘛我这么喜欢EJS呢,我只想要一个简单的帮我填充数据的模板而已。

2. 点评2

从前端的角度来讲

坚决抵制乱改html的这种行为!!!比如Jade

这玩意儿绝对是个后端发明的。绝对!

jade的唯一优势就是代码简洁

但是这个唯一优势在前端的眼里,就是它最大的一个败笔

它的这种做法完全失去了html原本应该有的灵活。

要知道作为一个前端,你写的不只是html代码本身。它还密切关联着css,js等等。

对于缩进,Python我也写过一点,和Jade完全不是一回事儿

Python里面我觉得很自然,简洁,易懂。

jade里面,本来很简单的东西就被复杂化了,很多用html写都是很简单的东西,到了jade反而变复杂了。

再说,Python里面缩进远没有jade里面频繁

3. 点评3

我在用ejs,因为我研究模板引擎还不是特别透彻,看过一些文档后,发现ejs是最好上手的,算是新手适用吧。

另外,jade的缩进的确是个问题,尽管上面那么多大神表示python也是要靠缩进的(本人不懂python),但是大部分前端工程师着实不是写python的,要为了一个模板引擎培养一种习惯也许还是有成本的。

4. 点评4

数据替换,ejs够了。

5. 点评5

在node.js中,一般的项目我更倾向于ejs这种类型的模板,原因很简单:成本非常低。一个团队中有设计师,node.js新手,单纯的前端开发人员,node.js老手,都能很轻松的看懂ejs类模板。对于这个团队中的所有人员来说,ejs类更一目了然,它就是html代码嘛,你可以把模板化html的任务交给团队中的任何一位成员来完成,相比另学jade的成本来说,还是更经济的方案。

总结

我的毕业设计项目-《基于HTML5实现的多人在线游戏-你画我猜》,一个比较小的项目,倾向于仅仅是数据填充,需求就是简单易用,所以选择了Ejs。

学习资源

更多精彩点评http://www.zhihu.com/question/20355486

Ejs官网http://www.embeddedjs.com/

Ejs模版快速入门http://blog.csdn.net/zhangxin09/article/details/18409119

Ejs快速入门教程http://www.csser.com/board/4fddc4f0b28ed7d857001674

174/456
176/456

相关文章

文章评论

  • 沙发,板凳都没偶的份了。

纸飞机许愿

x

钢琴节奏

请选择弹奏的曲谱

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 1
    • 2

    [返回曲谱列表]