首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于Node.js模板,Jade和EJS的优缺点是什么?

对于Node.js模板,Jade和EJS的优缺点是什么?
EN

Stack Overflow用户
提问于 2013-05-13 07:48:14
回答 2查看 81.7K关注 0票数 121

Jade和EJS,它们的优缺点是什么,它们的设计目的是什么?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-13 09:35:52

我以前用过Jade。Jade的好处是语法更短,这意味着你可以更快地输入。Jade中的block非常强大,在处理复杂的HTML代码时对我有很大的帮助。

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

代码语言:javascript
复制
- if (isAdmin)
  div.admin.user
- else
  div.user

Jade也没有区分标签和变量,这使得代码非常混乱(至少对我来说是这样)

代码语言:javascript
复制
a(href='/user/' + user.id)= user.name

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

代码语言:javascript
复制
table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

最近,我改用了EJS,到目前为止,我对它很满意。它非常接近纯HTML,并且使用与我正在使用的前端模板引擎(下划线模板)相同的语法。我必须说,有了EJS,一切都变得更容易了。当我从我的设计师朋友那里收到HTML模板时,我不需要做所有的转换。我所要做的就是用从ExpressJS传递过来的变量替换动态部分。使用Jade时让我发疯的东西在EJS中解决了。

代码语言:javascript
复制
<div class="<%= isAdmin? 'admin': '' %> user"></div>

我可以知道EJS是怎么回事。

代码语言:javascript
复制
<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没有的过滤器和标签

票数 181
EN

Stack Overflow用户

发布于 2013-05-13 09:38:26

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

我更喜欢EJS,因为我认为HTML不是太差,而且它允许我与其他人一起工作,而他们不必学习Jade。

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

选择你觉得更舒服的。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16513168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档