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

Jade与EJS,每种产品的优缺点以及每种设计的目的是什么?

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


我之前使用过翡翠。 关于Jade的好处在于,您的语法较短,这意味着您可以输入更快。 Jade中的block非常强大,在处理复杂的HTML代码时可以帮助我很多。

另一方面,在Jade中很难做一些简单的事情,比如根据简单的if条件将类添加到DIV中。 我需要把这样的东西

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

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

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

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

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

最近,我转向了EJS,到目前为止我对此感到满意。 它非常接近纯HTML,并使用与我正在使用的前端模板引擎(Underscore模板)相同的语法。 我必须说,EJS一切都会更容易。 从我的设计师朋友处收到HTML模板时,我不必进行所有转换。 我所要做的就是用从ExpressJS传递的变量替换动态部分。 在使用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实现了一个块特性)

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

2013年12月16日更新:最近,我从EJS切换到Swig(它与Python世界中的Jinja2有相似的概念)。 主要原因是即使在ejs-locals的帮助下,EJS也没有阻止。 Swig还使用纯HTML模板和模板引擎应具有的许多很酷的功能,例如EJS没有的过滤器和标签


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

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

但是,Jade相当干净,并且在您的视图中使用了一些整齐的代码。

选择你感觉更舒适的东西。

链接地址: http://www.djcxy.com/p/88899.html

上一篇: What are the pros and cons of both Jade and EJS for Node.js templating?

下一篇: What is a concise way to create inline elements in Jade