Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jade和EJS对Node.js模板的优缺点是什么?_Node.js_Pug_Ejs - Fatal编程技术网

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

Jade和EJS对Node.js模板的优缺点是什么?,node.js,pug,ejs,Node.js,Pug,Ejs,Jade和EJS,它们各自的优缺点是什么,各自的设计目的是什么 有好的吗?为什么?我以前用过玉。Jade的优点在于,您的语法更短,这意味着您可以更快地键入内容。Jade中的块功能非常强大,在处理复杂的HTML代码时,它可以帮助我很多 另一方面,在Jade中很难做一些简单的事情,比如根据简单的if条件将类添加到DIV中。我需要放一些像这样的东西 - if (isAdmin) div.admin.user - else div.user Jade也没有区分标记和变量,这使得代码非常混乱(至

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


有好的吗?为什么?我以前用过玉。Jade的优点在于,您的语法更短,这意味着您可以更快地键入内容。Jade中的
功能非常强大,在处理复杂的HTML代码时,它可以帮助我很多

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

- if (isAdmin)
  div.admin.user
- else
  div.user
Jade也没有区分标记和变量,这使得代码非常混乱(至少对我来说)

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

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

<div class="<%= isAdmin? 'admin': '' %> user"></div>

我可以知道EJS是什么

<a href="/user/<%= user.id %>"><%= user.name %></a>

如果你错过了Jade(像我一样)的简短语法,你可以结合Zen编码和EJS,这可以帮助你总体上加快进度。关于性能,我看不出有什么不同

然而,EJS没有Jade强大,默认情况下它没有块(这家伙为EJS实现了块特性)

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

2013年12月16日更新:
最近,我从EJS切换到了Swig(它的概念与Python世界中的Jinja2相似)。主要原因是即使在
ejslocals
的帮助下,EJS中也缺少块。Swig还在模板中使用纯HTML和许多模板引擎应该具有的很酷的功能,例如EJS没有的过滤器和标记,我不能说一个比另一个好。他们是不同的,这是肯定的,但“更好”是相当相对的术语

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

然而,Jade相当干净,在您的视图中可以生成一些整洁的代码


选择您觉得更舒服的选项。

关于不知道您处于哪个级别,应该提到的是,jade新支持在一行上使用多个标记。根据Jade的文档,“为了节省空间,Jade为嵌套标记提供了一种内联语法。”a:img相当于“”。我在一两年前尝试过
Jade
。也许现在情况正在好转。不管我如何重新评价我的第一点,你看到了吗?我给过你那个工具,但每次设计师给我东西,我都需要做转换(这很烦人),我只是想注意(关于你关于条件的第一点),你可能可以在这个用例中使用三元语法。请参阅此堆栈溢出问题:
<a href="/user/<%= user.id %>"><%= user.name %></a>