Jade 和 EJS 对于 Node.js 模板的优缺点是啥? [关闭]

Posted

技术标签:

【中文标题】Jade 和 EJS 对于 Node.js 模板的优缺点是啥? [关闭]【英文标题】:What are the pros and cons of both Jade and EJS for Node.js templating? [closed]Jade 和 EJS 对于 Node.js 模板的优缺点是什么? [关闭] 【发布时间】:2013-05-06 23:06:05 【问题描述】:

Jade 与 EJS,各自的优缺点是什么?各自的设计目的是什么?

有没有好的any other express-compatible template engines,为什么?

【问题讨论】:

【参考方案1】:

我以前用过翡翠。 Jade 的好处是你的语法更短,这意味着你可以更快地打字。 Jade 中的block 非常强大,在处理复杂的 html 代码时可以帮助我很多。

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

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

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

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

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

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

最近,我改用 EJS,到目前为止我对它很满意。它非常接近纯 HTML,并使用与我正在使用的前端模板引擎(下划线模板)相同的语法。我必须说,使用 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强大,默认没有block(这家伙为EJS实现了block功能https://github.com/RandomEtc/ejs-locals)

因此,完全取决于您选择让您感到舒适的东西。但是如果你要像我一样在前端使用另一个模板引擎,最好两边都使用相同的东西

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

【讨论】:

关于不知道你在哪个级别,应该提到jade新增了对单行多个标签的支持。从 Jade 的文档中,'为了节省空间,jade 为嵌套标签提供了内联语法。'a:img' 等效于 ''。 我确实在一两年前尝试过Jade。或许现在正在好转。然而,我的第一点要重新考虑,要解决这个问题并不容易 你见过html2jade吗? 我做了你那个工具,但是每次设计师给我东西的时候,我都需要做转换(这很烦人) 我只是想指出(关于您关于条件的第一点),您可以在此用例中使用三元语法。请参阅此堆栈溢出问题:***.com/questions/9488029/…【参考方案2】:

我不会说一个比另一个更好。它们是不同的,这是肯定的,但“更好”是相对而言的。

我更喜欢 EJS,因为我认为 HTML 还不错,而且它允许我与其他人一起工作,而无需他们学习 Jade。

但是,Jade 相当干净,可以在您的视图中生成一些简洁的代码。

选择你觉得更舒服的。

【讨论】:

以上是关于Jade 和 EJS 对于 Node.js 模板的优缺点是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

[js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

express 默认模板引擎

vue node.js 安装

什么是最可靠和最流行的 Node.js 模板引擎? [关闭]

Jade 模板布局不能与 Node.js 结合使用

node创建项目,要ejs模板引擎,不要jade怎么办?