Нефрит проти ЕЖС, які плюси і мінуси кожного і для яких цілей розроблений кожен?
Чи є які- небудь інші експрес-сумісні шаблонні двигуни , які хороші і чому?
Нефрит проти ЕЖС, які плюси і мінуси кожного і для яких цілей розроблений кожен?
Чи є які- небудь інші експрес-сумісні шаблонні двигуни , які хороші і чому?
Відповіді:
Раніше я використовував Джейд. Приємна річ про Джейд полягає в тому, що у вас коротший синтаксис, а це означає, що ви можете вводити швидше. 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 не має
Jade
один-два роки тому. Можливо, зараз стає краще. Однак рендеризуючи мій перший пункт, обійти це не буде легко
Я б не сказав, що один кращий за інший. Вони різні, це точно, але «краще» - досить відносний термін.
Я віддаю перевагу EJS, тому що я думаю, що HTML не надто поганий, плюс він дозволяє мені працювати з іншими, без того, щоб вони не навчалися Джейд.
Однак Джейд досить чистий і робить якийсь акуратний код у ваших поглядах.
Вибирайте все, що вам зручніше.