it-swarm.com.de

Was sind die Vor- und Nachteile von Jade und EJS für Node.js-Vorlagen?

Jade versus EJS, was sind die Vor- und Nachteile von jedem und für welche Zwecke ist jeder entwickelt worden?

Gibt es andere Express-kompatible Template-Engines die gut sind und warum?

115
HaoQi Li

Ich habe Jade schon mal benutzt. Das Schöne an Jade ist, dass Sie eine kürzere Syntax haben, was bedeutet, dass Sie schneller tippen können. Das block in Jade ist ziemlich mächtig, was mir beim Umgang mit komplexem HTML-Code sehr helfen kann.

Auf der anderen Seite ist es schwierig, in Jade ein paar einfache Dinge zu tun, zum Beispiel Klassen zu einem DIV hinzuzufügen, basierend auf einer einfachen if-Bedingung. Ich muss so etwas sagen

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

Jade unterscheidet auch nicht zwischen den Tags und den Variablen, die den Code sehr verwirrend machen (zumindest für mich)

a(href='/user/' + user.id)= user.name

Jade ist auch nicht designerfreundlich. Meine Designerfreunde geben mir oft HTML und CSS (sie sind kürzlich auf WENIGER umgestiegen, möchten aber immer noch HTML verwenden), und aus diesem Grund muss ich HTML in Jade konvertieren, wenn ich Jade verwende. Auch in Jade müssen wir Einrückungen verwenden. Wenn Ihre HTML-Struktur also kompliziert wird, sieht Ihr Code schrecklich aus (insbesondere Tabellen). Manchmal weiß ich nicht einmal, auf welchem ​​Niveau ich bin

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

Kürzlich habe ich zu EJS gewechselt und bin damit bisher zufrieden. Es kommt reinem HTML sehr nahe und verwendet die gleiche Syntax wie das von mir verwendete Frontend-Template (Underscore-Template). Ich muss sagen, dass mit EJS alles einfacher ist. Ich muss nicht die gesamte Konvertierung durchführen, wenn ich HTML-Vorlagen von meinem Designer-Freund erhalte. Ich muss nur die dynamischen Teile durch Variablen ersetzen, die von ExpressJS übergeben wurden. Dinge, die mich verrückt machen, wenn ich Jade benutze, werden in EJS gelöst

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

Und ich kann wissen, was mit EJS ist

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

Wenn Sie die kurze Syntax von Jade (wie ich) vermissen, können Sie Zen-Coding und EJS kombinieren, um den Fortschritt im Allgemeinen zu beschleunigen. In Bezug auf die Leistung sehe ich keine Unterschiede

Allerdings ist EJS nicht so mächtig wie Jade, es hat standardmäßig keine Blöcke (dieser Typ hat eine Block-Funktion für EJS implementiert https://github.com/RandomEtc/ejs-locals )

Es liegt also ganz bei Ihnen, zu entscheiden, was Sie bequem macht. Aber wenn Sie wie ich eine andere Template-Engine für das Frontend verwenden, ist es besser, wenn Sie für beide Seiten dasselbe verwenden

Update 16. Dezember 2013: Vor kurzem habe ich von EJS zu Swig gewechselt (das in Python world) ein ähnliches Konzept wie das von Jinja2 hat) Hilfe von ejs-locals. Swig verwendet auch einfaches HTML für Vorlagen und viele coole Funktionen, die eine Vorlagen-Engine haben sollte, zum Beispiel Filter und Tags, die EJS nicht hat

174
Tan Nguyen

Ich würde nicht sagen, dass einer besser ist als der andere. Sie unterscheiden sich zwar, aber "besser" ist ein relativ guter Begriff.

Ich bevorzuge EJS, weil ich denke, dass HTML nicht schlecht ist, und weil es mir erlaubt, mit anderen zusammenzuarbeiten, ohne dass sie Jade lernen müssen.

Jade ist jedoch ziemlich sauber und sorgt für einen ordentlichen Code in Ihren Ansichten.

Wählen Sie, was Sie sich wohler fühlen.

38
Hector Correa