Jakie są plusy i minusy zarówno Jade i EJS dla węzła.szablony js? [zamknięte]

Jade kontra EJS, jakie są plusy i minusy każdego z nich i do jakich celów każdy z nich jest przeznaczony?

Czy istnieją inne silniki szablonów kompatybilne z ekspresem , które są dobre i dlaczego?

Author: fretje, 2013-05-13

2 answers

Kiedyś używałem jadeitu. Fajną rzeczą w Jade jest to, że masz krótszą składnię, co oznacza, że możesz pisać szybciej. block W Jade jest dość potężny, co może mi bardzo pomóc w radzeniu sobie ze złożonym kodem HTML.

Z drugiej strony, trudno jest zrobić kilka prostych rzeczy w Jade, takich jak dodawanie klas do DIV na podstawie prostego warunku if. Muszę umieścić coś takiego

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

Jade również nie rozróżnia znaczników i zmiennych, które sprawiają, że kod bardzo mylący (przynajmniej dla mnie)

a(href='/user/' + user.id)= user.name
Jade nie jest również przyjazny dla projektantów. Moi przyjaciele projektanci często dają mi HTML i CSS (zmienili na mniej niedawno, ale nadal chcą używać HTML), i z tego powodu, Jeśli używam Jade, muszę przekonwertować HTML na Jade. Również w Jade musimy użyć wcięć, więc jeśli twoja struktura HTML się skomplikuje, Twój kod będzie wyglądał okropnie (zwłaszcza tabele). Czasami nawet nie wiem na jakim jestem poziomie
table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td
[7]}Ostatnio, zrobiłem przełącznik na EJS i na razie jestem z niego zadowolony. Jest bardzo zbliżony do czystego HTML i używa tej samej składni, co silnik szablonów frontend, którego używam(szablon podkreślenia). Muszę powiedzieć, że z EJS wszystko jest łatwiejsze. Nie muszę wykonywać całej konwersji, gdy otrzymuję szablony HTML od mojego przyjaciela projektanta. Wszystko, co muszę zrobić, to zastąpić części dynamiczne zmiennymi przekazanymi z ExpressJS. Rzeczy, które doprowadzają mnie do szaleństwa podczas używania Jade są rozwiązywane w EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>

And I can know what is what z EJS

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

Jeśli brakuje Ci krótkiej składni Jade (tak jak ja), możesz połączyć kodowanie zen i EJS, które mogą pomóc Ci przyspieszyć postęp w ogóle. Co do wydajności, nie widzę żadnych różnic

Jednak EJS nie jest tak potężny jak Jade, nie ma bloków domyślnie (ten facet zaimplementował funkcję blokowania dla EJS https://github.com/RandomEtc/ejs-locals )

Więc to od Ciebie zależy, co sprawi, że poczujesz się komfortowo. Ale jeśli idziesz aby użyć innego silnika szablonów dla frontendu, jak ja, lepiej, jeśli używasz tego samego dla obu stron

Aktualizacja 16 Grudnia 2013: Ostatnio przesiadłem się z EJS na Swig (który ma podobną koncepcję jak Jinja2 w świecie Pythona). Głównym powodem jest brak bloku w EJS nawet przy pomocy ejs-locals. Swig używa również zwykłego HTML dla szablonów i wiele fajnych funkcji, które silnik szablonów powinien mieć, na przykład filtry i tagi, których EJS nie ma

 171
Author: Tan Nguyen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-18 08:06:08

Nie powiedziałbym, że jeden jest lepszy od drugiego. Są różne, to na pewno, ale "lepsze" to dość względne określenie.

Wolę EJS, bo uważam, że HTML nie jest taki zły, poza tym pozwala mi pracować z innymi bez konieczności uczenia się.

Jednak Jade jest raczej czysty i tworzy jakiś schludny kod w Twoich poglądach.

Wybierz to, co czujesz bardziej komfortowo.

 37
Author: Hector Correa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-13 01:38:25