2013-05-12 101 views

回答

166

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

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

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

玉还(至少对我来说)的标签和这使得代码非常混乱的变量之间不区分

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

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

我能知道什么是EJS

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

如果你错过了什么玉(比如我)的短语法,你可以结合Zen-Coding和EJS可以帮助你加速整体进度。关于性能,我看不出有什么差别

但是,EJS并不像玉一样强大,它没有默认块(这家伙实施了EJS https://github.com/RandomEtc/ejs-locals块功能)

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

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

+1

关于不知道你是什么级别,应该提到玉石在一条线上有多个标签的新支持。从Jade的文档中,'为了节省空间,jade提供嵌套标签的内联语法.'a:img'相当于''。 – 2013-09-02 22:13:06

+1

我在一两年前尝试过'Jade'。也许它现在正在变得更好。不过,重写我的第一点,它不会容易得到解决 – 2013-10-02 20:50:42

+1

你见过[html2jade](http://html2jade.com/)吗? – tjameson 2013-10-24 02:17:06

37

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

我更喜欢EJS,因为我觉得HTML并不算太坏,再加上它可以让我与他人一起工作,而不必学习Jade。

然而,翡翠是相当干净,使你的意见中的一些整洁的代码。

选择你感觉更舒适的任何东西。

相关问题