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 довольно чист и позволяет добавить аккуратный код в ваши представления.
Выберите то, что вам удобнее.
источник