用于Node.js模板的Jade和EJS有哪些优缺点?

Jade和EJS,每个人的利弊有哪些,每个人的目的是什么?

有没有其他快速兼容的模板引擎是好的,为什么?

我以前用过翡翠。 关于Jade的好处是你有一个更短的语法,这意味着你可以input更快。 Jade中的block非常强大,可以帮助我处理复杂的HTML代码。

另一方面,在Jade中做一些简单的事情是很困难的,比如像在一个简单的if条件下向DIV中添加类。 我需要把这样的东西

 - if (isAdmin) div.admin.user - else div.user 

Jade也不区分标签和使代码非常混淆的variables(至less对我而言)

 a(href='/user/' + user.id)= user.name 

玉也不是devise师友好的。 我的devise师朋友经常给我HTML和CSS(他们最近切换到LESS,但仍然希望使用HTML),因此,如果我使用Jade,我需要将HTML转换为Jade。 同样在Jade中,我们需要使用缩进,所以如果你的HTML结构变得复杂的话,你的代码看起来会很糟糕(尤其是表格)。 有时候,我甚至不知道自己在什么级别

 table thead tr td a img tr td tbody tr td 

最近,我转向了EJS,到目前为止我对此感到满意。 它非常接近纯HTML,并使用与我正在使用的前端模板引擎(Underscore模板)相同的语法。 我必须说,EJS一切都变得简单。 从我的devise师朋友那里收到HTML模板时,我不必做所有的转换。 我所要做的就是用ExpressJS传递的variablesreplacedynamic部分。 使用Jade让我疯狂的东西在EJS中解决

 <div class="<%= isAdmin? 'admin': '' %> user"></div> 

我可以知道EJS是什么

 <a href="/user/<%= user.id %>"><%= user.name %></a> 

如果您错过了Jade的简短语法(像我一样),您可以将Zen-Coding和EJS结合起来,这可以帮助您加速整体进度。 关于表演,我没有看到任何分歧

然而,EJS并不像Jade那么强大,默认情况下它没有阻塞(这个人为EJS https://github.com/RandomEtc/ejs-locals实现了一个块特性);

所以,完全取决于你select什么让你感到舒服。 但是如果你要为像我这样的前端使用另一个模板引擎,那么如果你对两边使用相同的东西

2013年12月16日更新:最近,我从EJS转换到了Swig(与Python世界中的Jinja2有相似的概念)。 主要原因是即使在ejs-locals的帮助下,EJS也没有阻止。 Swig也使用纯HTML作为模板,并且模板引擎应该有很多很酷的function,例如EJS没有的filter和标签

我不会说一个比另一个好。 他们是不同的,这是肯定的,但“更好”是相当的术语。

我更喜欢EJS,因为我觉得HTML并不算太坏,再加上它让我可以和其他人一起工作,而不必学习Jade。

但是,Jade相当干净,在你的意见中使用了一些整齐的代码。

select你感觉更舒适的东西。