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编辑,删除)