Jade和EJS for Node.js模板的优缺点是什么?[关闭]


118

Jade与EJS,每种都有什么优缺点,每种目的是为了什么?

是否还有其他兼容Express的模板引擎,为什么?

Answers:


178

我以前用过玉。关于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传递的变量替换动态部件。在EJS中解决了使我疯狂使用Jade的东西

<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中也缺少块ejs-locals。Swig还使用纯HTML模板和模板引擎应具有的许多很酷的功能,例如EJS没有的过滤器和标签


1
关于不知道您处于哪个级别,应该提到jade对单行上的多个标签提供了新的支持。在Jade的文档中,“为节省空间,Jade为嵌套标签提供了内联语法。'a:img'等效于'<a> <img /> </a>”。
Verdi ErelErgün13年

1
我在Jade一两年前确实尝试过。也许现在情况正在好转。然而,不管我的观点如何,都很难解决
Tan Nguyen

1
你看过html2jade吗?
Beatgammit

4
我为您提供了该工具,但仍然,每次设计师给我一些东西时,我都需要进行转换(这很烦人)
Tan Nguyen

1
我只是想指出(关于条件的第一点),您可能可以在此用例中使用三元语法。看到这个堆栈溢出问题:stackoverflow.com/questions/9488029/...
罗布·吉本斯

43

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

我更喜欢EJS,因为我认为HTML不太差,而且它使我可以与他人合作,而无需他们学习Jade。

但是,Jade非常干净,可以在您的视图中编写一些简洁的代码。

选择任何您觉得更舒适的东西。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.