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

118

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

Существуют ли другие подходящие движки шаблонов , поддерживающие экспресс-режим , и почему?

Хаоци Ли
источник

Ответы:

179

Раньше я использовал Джейд. В Jade хорошо то, что у вас более короткий синтаксис, что означает, что вы можете печатать быстрее. В blockJade довольно мощный инструмент, который может очень помочь мне при работе со сложным HTML-кодом.

С другой стороны, в Jade сложно делать какие-то простые вещи, например, добавлять классы в DIV на основе простого условия if. Мне нужно поставить что-то вроде этого

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

Джейд также не различает теги и переменные, что сбивает код с толку (по крайней мере, для меня).

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

Джейд также не очень дружелюбна к дизайнерам. Мои друзья-дизайнеры часто дают мне HTML и CSS (они недавно перешли на LESS, но все еще хотят использовать HTML), и по этой причине, если я использую Jade, мне нужно преобразовать HTML в Jade. Также в Jade нам нужно использовать отступы, поэтому, если ваша структура HTML станет сложной, ваш код будет выглядеть ужасно (особенно таблицы). Иногда я даже не знаю, на каком я уровне

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

Недавно я перешел на EJS и пока доволен этим. Он очень близок к чистому HTML и использует тот же синтаксис, что и используемый мной шаблонизатор внешнего интерфейса (шаблон 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 (концепция которого аналогична концепции Jinja2 в мире Python). Основная причина - отсутствие блокировки в EJS даже с помощью ejs-locals. Swig также использует простой HTML для шаблонов и множество интересных функций, которые должен иметь шаблонизатор, например фильтры и теги, которых нет в EJS.

Тан Нгуен
источник
1
Если вы не знаете, на каком уровне вы находитесь, следует отметить, что в jade появилась новая поддержка нескольких тегов в одной строке. Из документации Jade: «Чтобы сэкономить место, в jade есть встроенный синтаксис для вложенных тегов.« A: img »эквивалентно« <a> <img /> </a> ».
Verdi Erel Ergün 02
1
Я пробовал год Jadeили два назад. Возможно, сейчас становится лучше. Как бы то ни было, пересматривая мою первую точку зрения, это будет нелегко обойтись
Тан Нгуен
1
Вы видели html2jade ?
beatgammit
4
Я сделал вам этот инструмент, но, тем не менее, каждый раз, когда дизайнер что-то мне дает, мне нужно выполнить преобразование (это раздражает)
Тан Нгуен
1
Я просто хотел отметить (относительно вашего первого замечания об условных выражениях), что вы можете использовать тернарный синтаксис для этого варианта использования. См. Этот вопрос о переполнении стека: stackoverflow.com/questions/9488029/…
Роб Гиббонс,
43

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

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

Тем не менее, Jade довольно чист и позволяет добавить аккуратный код в ваши представления.

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

Гектор Корреа
источник