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?
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?
Odpowiedzi:
Używałem Jade wcześniej. Zaletą Jade jest to, że masz krótszą składnię, co oznacza, że możesz pisać szybciej. block
W 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
Jade
lub dwa lata temu. Być może teraz jest lepiej. Jednak oceniając mój pierwszy punkt, nie będzie łatwo tego obejść
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.