Подтвердить что ты не робот

Каковы плюсы и минусы Jade и EJS для шаблонов Node.js?

Jade против EJS, каковы плюсы и минусы каждого и какие цели предназначены для?

Есть ли любые другие экспресс-совместимые механизмы шаблонов, которые хороши и почему?

4b9b3361

Ответ 1

Раньше я использовал Джейд. Самое приятное в 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 не имеет

Ответ 2

Я бы не сказал, что один лучше другого. Они разные, это точно, но "лучше" - довольно относительный термин.

Я предпочитаю EJS, потому что я думаю, что HTML не так уж плох, плюс он позволяет мне работать с другими, без необходимости изучать Джейд.

Тем не менее, Jade довольно чист и делает некоторые четкие коды в ваших взглядах.

Выберите все, что вам будет комфортно.