Які плюси і мінуси Jade і EJS для шаблону Node.js? [зачинено]


118

Нефрит проти ЕЖС, які плюси і мінуси кожного і для яких цілей розроблений кожен?

Чи є які- небудь інші експрес-сумісні шаблонні двигуни , які хороші і чому?

Відповіді:


179

Раніше я використовував Джейд. Приємна річ про Джейд полягає в тому, що у вас коротший синтаксис, а це означає, що ви можете вводити швидше. blockУ Джейд досить потужний , який може допомогти мені багато , коли справа зі складним HTML коду.

З іншого боку, в Jade важко зробити прості речі, такі як додавання класів у DIV на основі простої умови, якщо. Мені потрібно поставити щось подібне

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

Джейд також не розрізняє теги та змінні, які роблять код дуже заплутаним (принаймні для мене)

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

Нефрит також не є дизайнером. Мої друзі-дизайнери часто дають мені HTML та CSS (Вони нещодавно перейшли на МЕНШЕ, але все ще хочу використовувати HTML), і тому, якщо я використовую Jade, мені потрібно конвертувати HTML в Jade. Також у Jade нам потрібно використовувати відступи, тому, якщо ваша HTML-структура ускладниться, ваш код буде виглядати жахливо (особливо таблиці). Іноді я навіть не знаю, на якому рівні я

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

Нещодавно я зробив перехід на EJS, і я задоволений цим поки що. Він дуже близький до чистого HTML і використовує той самий синтаксис, що і у двигуні шаблонів фронтену, який я використовую (шаблон підкреслення). Треба сказати, що з EJS все простіше. Мені не потрібно робити все перетворення, коли отримую HTML-шаблони від мого друга дизайнера. Все, що мені потрібно зробити, - це замінити динамічні частини змінними, переданими з ExpressJS. Речі, які змушують мене з глузду при використанні нефриту, вирішуються в EJS

<div class="<%= isAdmin? 'admin': '' %> user"></div>

І я можу знати, що з EJS

<a href="/user/<%= user.id %>"><%= user.name %></a>

Якщо ви пропустите короткий синтаксис Нефриту (як я), ви можете комбінувати дзен-кодування та EJS, що може допомогти вам прискорити прогрес загалом. Щодо продуктивності, я не бачу відмінностей

Однак EJS не настільки потужний, як Jade, у нього немає блоків за замовчуванням (цей хлопець реалізував функцію блоку для EJS https://github.com/RandomEtc/ejs-locals )

Отже, вибирати все, що вам зручніше, повністю залежить від вас. Але якщо ви збираєтесь використовувати інший двигун шаблону для фронтенду, як я, краще, якщо ви використовуєте те саме для обох сторін

Оновлення 16 грудня 2013 року: Нещодавно я перейшов з EJS на Swig (який має аналогічну концепцію Jinja2 у світі Python). Основна причина - відсутність блоку в EJS навіть за допомогою ejs-locals. Swig також використовує звичайний HTML для шаблонів і безліч цікавих функцій, які має мати механізм шаблонів, наприклад фільтри та теги, яких EJS не має


1
Що стосується того, що ви не знаєте, на якому рівні ви перебуваєте, слід зазначити, що нефрит має нову підтримку декількох тегів у одному рядку. З документації Джейда, "Щоб заощадити місце, нефрит надає вбудований синтаксис вкладених тегів. ': Img' еквівалентно '<a> <img /> </a>'.
Верді Ерел Ергюн

1
Я намагався Jadeодин-два роки тому. Можливо, зараз стає краще. Однак рендеризуючи мій перший пункт, обійти це не буде легко
Тан Нгуен

1
Ви бачили html2jade ?
beatgammit

4
Я зробив вам цей інструмент, але все-таки кожен раз, коли дизайнер щось мені дає, мені потрібно робити перетворення (це дратує)
Tan Nguyen

1
Я просто хотів зауважити (стосовно вашого першого пункту про умовні умови), що ви можете бути в змозі використовувати потрійний синтаксис для цього випадку використання. Дивіться це запитання про переповнення стека: stackoverflow.com/questions/9488029/…
Роб Гіббонс

43

Я б не сказав, що один кращий за інший. Вони різні, це точно, але «краще» - досить відносний термін.

Я віддаю перевагу EJS, тому що я думаю, що HTML не надто поганий, плюс він дозволяє мені працювати з іншими, без того, щоб вони не навчалися Джейд.

Однак Джейд досить чистий і робить якийсь акуратний код у ваших поглядах.

Вибирайте все, що вам зручніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.