Jakie są zalety i wady zarówno Jade, jak i EJS dla szablonów Node.js? [Zamknięte]

118

Jade kontra EJS, jakie są wady i zalety każdego z nich i do jakich celów są przeznaczone?

Czy są jakieś inne silniki szablonów kompatybilne z Express, które są dobre i dlaczego?

HaoQi Li
źródło

Odpowiedzi:

179

Używałem Jade wcześniej. Zaletą Jade jest to, że masz krótszą składnię, co oznacza, że ​​możesz pisać szybciej. blockW Jade jest dość silny, który może mi bardzo pomóc przy rozpatrywaniu złożonego kodu HTML.

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

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

Jade również nie rozróżnia tagów i zmiennych, co sprawia, że ​​kod jest bardzo zagmatwany (przynajmniej dla mnie)

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

Jade również nie jest przyjazny dla projektantów. Moi przyjaciele projektanci często dają mi HTML i CSS (ostatnio przeszli na MNIEJ, ale nadal chcą używać HTML) iz tego powodu, jeśli używam Jade, muszę przekonwertować HTML na Jade. Również w Jade musimy używać wcięć, więc jeśli twoja struktura HTML stanie się skomplikowana, twój kod będzie wyglądał okropnie (szczególnie tabele). Czasami nawet nie wiem, na jakim jestem poziomie

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

Niedawno przesiadłem się 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 frontendu, 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 znajomego projektanta. Wszystko, co muszę zrobić, to zastąpić części dynamiczne zmiennymi przekazywanymi z ExpressJS. Rzeczy, które doprowadzają mnie do szału podczas używania Jade, są rozwiązywane w EJS

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

I wiem, co jest z EJS

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

Jeśli przegapisz krótką składnię Jade (tak jak ja), możesz połączyć Zen-Coding i EJS, co może pomóc w ogólnym przyspieszeniu postępu. Jeśli chodzi o wydajność, nie widzę żadnych różnic

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

Więc to od Ciebie zależy, czy wybierzesz to, co zapewni Ci wygodę. Ale jeśli zamierzasz użyć innego silnika szablonów dla frontendu, jak ja, lepiej jeśli użyjesz tego samego dla obu stron

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

Tan Nguyen
źródło
1
Jeśli nie wiesz, na jakim poziomie jesteś, należy wspomnieć, że jade ma nowe wsparcie dla wielu tagów w jednej linii. Z dokumentacji Jade wynika: „Aby zaoszczędzić miejsce, jade zapewnia wbudowaną składnię dla zagnieżdżonych tagów .'a: img” jest równoważne z „<a> <img /> </a>”.
Verdi Erel Ergün
1
Próbowałem rok Jadelub dwa lata temu. Być może teraz jest lepiej. Jednak oceniając mój pierwszy punkt, nie będzie łatwo tego obejść
Tan Nguyen
1
Widziałeś html2jade ?
beatgammit
4
Zrobiłem ci to narzędzie, ale nadal za każdym razem, gdy projektant mi coś daje, muszę zrobić konwersję (to jest denerwujące)
Tan Nguyen
1
Chciałem tylko zauważyć (odnosząc się do twojego pierwszego punktu dotyczącego warunków warunkowych), że możesz użyć trójskładniowej składni w tym przypadku użycia. Zobacz to pytanie o przepełnienie stosu: stackoverflow.com/questions/9488029/…
Rob Gibbons,
43

Nie powiedziałbym, że jeden jest lepszy od drugiego. Są różne, to na pewno, ale „lepsze” to pojęcie względne.

Wolę EJS, ponieważ uważam, że HTML nie jest taki zły, a ponadto pozwala mi pracować z innymi bez konieczności uczenia się Jade.

Jednak Jade jest raczej czysty i tworzy zgrabny kod w twoich widokach.

Wybierz to, co czujesz bardziej komfortowo.

Hector Correa
źródło