Jade против EJS, каковы плюсы и минусы каждого и какие цели предназначены для?
Есть ли любые другие экспресс-совместимые механизмы шаблонов, которые хороши и почему?
Jade против EJS, каковы плюсы и минусы каждого и какие цели предназначены для?
Есть ли любые другие экспресс-совместимые механизмы шаблонов, которые хороши и почему?
Раньше я использовал Джейд. Самое приятное в Jade заключается в том, что у вас более короткий синтаксис, который означает, что вы можете вводить быстрее. block
в Jade довольно мощный, который может мне очень помочь при работе с сложным кодом HTML.
С другой стороны, в Jade сложно сделать некоторые простые вещи, например добавить классы в DIV на основе простого условия if. Мне нужно поставить что-то вроде этого
- if (isAdmin)
div.admin.user
- else
div.user
Jade также не различает теги и переменные, которые делают код очень запутанным (по крайней мере для меня)
a(href='/user/' + user.id)= user.name
Jade также не подходит для дизайнеров. Мои друзья-дизайнеры часто дают мне HTML и CSS (они недавно переключились на LESS, но все еще хотят использовать HTML), и по этой причине, если я использую Jade, мне нужно преобразовать HTML в Jade. Также в Jade нам нужно использовать отступы, поэтому, если ваша структура HTML усложняется, ваш код будет выглядеть ужасно (особенно таблицы). Иногда я даже не знаю, на каком уровне я нахожусь
table
thead
tr
td
a
img
tr
td
tbody
tr
td
Недавно я переключился на EJS, и до сих пор я доволен этим. Он очень близок к чистому HTML и использует тот же синтаксис, что и для механизма шаблона frontend, который я использую (шаблон Underscore). Я должен сказать, что с EJS все проще. Мне не нужно делать все преобразования при получении шаблонов HTML от моего друга-дизайнера. Все, что мне нужно сделать, это заменить динамические части на переменные, переданные из ExpressJS. Вещи, которые заставляют меня сходить с ума при использовании Jade, решаются в EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>
И я знаю, что с EJS
<a href="/user/<%= user.id %>"><%= user.name %></a>
Если вы пропустите короткий синтаксис Jade (как и я), вы можете комбинировать Zen-Coding и EJS, которые могут помочь вам ускорить прогресс в целом. О производительности я не вижу различий
Однако EJS не такой мощный, как Jade, он не имеет блоков по умолчанию (этот парень реализовал блок-функцию для EJS https://github.com/RandomEtc/ejs-locals)
Таким образом, это зависит от вас, чтобы выбрать то, что вам удобно. Но если вы собираетесь использовать другой механизм шаблонов для интерфейса вроде меня, лучше, если вы используете одно и то же для обеих сторон.
Обновление 16 декабря 2013 года:
Недавно я переключился с EJS на Swig (который имеет аналогичную концепцию JJJ2 в мире Python). Основная причина заключается в отсутствии блока в EJS даже с помощью ejs-locals
. Swig также использует простой HTML для шаблонов и множество интересных функций, которые должен иметь механизм шаблонов, например фильтры и теги, которые EJS не имеет
Я бы не сказал, что один лучше другого. Они разные, это точно, но "лучше" - довольно относительный термин.
Я предпочитаю EJS, потому что я думаю, что HTML не так уж плох, плюс он позволяет мне работать с другими, без необходимости изучать Джейд.
Тем не менее, Jade довольно чист и делает некоторые четкие коды в ваших взглядах.
Выберите все, что вам будет комфортно.