Jade против EJS, каковы плюсы и минусы каждого из них и для каких целей каждый предназначен?
Существуют ли другие подходящие движки шаблонов , поддерживающие экспресс-режим , и почему?
Jade против EJS, каковы плюсы и минусы каждого из них и для каких целей каждый предназначен?
Существуют ли другие подходящие движки шаблонов , поддерживающие экспресс-режим , и почему?
Ответы:
Раньше я использовал Джейд. В Jade хорошо то, что у вас более короткий синтаксис, что означает, что вы можете печатать быстрее. В block
Jade довольно мощный инструмент, который может очень помочь мне при работе со сложным 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.
Jade
или два назад. Возможно, сейчас становится лучше. Как бы то ни было, пересматривая мою первую точку зрения, это будет нелегко обойтись
Я бы не сказал, что одно лучше другого. Они разные, это точно, но «лучше» - термин довольно условный.
Я предпочитаю EJS, потому что считаю, что HTML не так уж и плох, к тому же он позволяет мне работать с другими без необходимости изучать Jade.
Тем не менее, Jade довольно чист и позволяет добавить аккуратный код в ваши представления.
Выберите то, что вам удобнее.