Jade versus EJS, was sind die Vor- und Nachteile der einzelnen und für welche Zwecke sind sie jeweils konzipiert?
Gibt es andere Express-kompatible Template-Engines , die gut sind und warum?
Jade versus EJS, was sind die Vor- und Nachteile der einzelnen und für welche Zwecke sind sie jeweils konzipiert?
Gibt es andere Express-kompatible Template-Engines , die gut sind und warum?
Antworten:
Ich habe vorher Jade 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, einige einfache Dinge in Jade zu tun, wie das Hinzufügen von Klassen zu einem DIV 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 Designer-freundlich. Meine Designerfreunde geben mir oft HTML und CSS (sie haben kürzlich zu WENIGER gewechselt, möchten aber immer noch HTML verwenden). Wenn ich Jade verwende, muss ich HTML in Jade konvertieren. Auch in Jade müssen wir Einrückungen verwenden. Wenn Ihre HTML-Struktur 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
Vor kurzem habe ich zu EJS gewechselt und bin bisher damit zufrieden. Es kommt reinem HTML sehr nahe und verwendet dieselbe Syntax wie die von mir verwendete Frontend-Template-Engine (Unterstrich-Vorlage). 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 lediglich die dynamischen Teile durch Variablen ersetzen, die von ExpressJS übergeben wurden. Dinge, die mich bei der Verwendung von Jade verrückt machen, 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
EJS ist jedoch nicht so leistungsfähig wie Jade, es hat standardmäßig keine Blöcke (dieser Typ hat eine Blockfunktion für EJS https://github.com/RandomEtc/ejs-locals implementiert ).
Es liegt also ganz bei Ihnen, auszuwählen, was Sie bequem macht. Wenn Sie jedoch 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 ein ähnliches Konzept wie das von Jinja2 in der Python-Welt hat). Der Hauptgrund ist das Fehlen von Block in EJS auch mit 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
Jade
ein oder zwei Jahren versucht . Vielleicht wird es jetzt besser. Wie auch immer ich meinen ersten Punkt betrachte, es wird nicht leicht sein, das zu umgehen
Ich würde nicht sagen, dass einer besser ist als der andere. Sie sind sicher unterschiedlich, aber "besser" ist ein relativ relativer Begriff.
Ich bevorzuge EJS, weil ich denke, dass HTML nicht schlecht ist und ich mit anderen arbeiten kann, ohne dass sie Jade lernen müssen.
Jade ist jedoch ziemlich sauber und sorgt für ordentlichen Code in Ihren Ansichten.
Wählen Sie, was Sie sich wohler fühlen.