Node.js / Express.js template engine

Всем привет.

Вопрос: используете ли вы какие-то шаблонизаторы для server side render’инга для проектов на Node.js / Express.js? Если да, то какие именно и почему выбор пал именно на них?

Лично для меня основные критерии при выборе движка следующие:

  • Удобный и читаемый синтаксис;
  • Возможность внедрять includes в шаблоны;
  • Возможность создавать свои helper functions для использования в шаблонах;

Пробовал pug / jade. Не очень понравилось, что валидность шаблона держится на правильных отступах. Поставив где-то пробел вместо ожидаемого tab'а, можно провести несколько следующих часов в мире debugg'a.

Сейчас ковыряюсь в ejs. Немножко монструозный синтаксис + когда дело дошло до кастомных helper functions для шаблонов, пошли танцы с бубнами (записывать их в app.locals). И хотя этот подход одобрен документацией, всё равно хочется чего-то более явного (как, например, метод registerHelper в Handlebars).

Искал так же Express / Handlebars. Нашел такое, но надпись Latest commit a66aad4 on May 3, 2016 немножко отпугивает.

Хотелось бы услышать мнение коллег по этому вопросу.

P.S. Статья по теме шаблонизаторов в JS: Top 10 Templating Engines for JavaScript To Improve and Simplify Your Workflow 2017

1 лайк

Я изучаю ту же тему сейчас на пет-проджекте. Имел опыт с jade пару лет том, не понравилась работа с инклудами. Разметку писать просто, читать сложно. Смотрел на движки по типу handlebars, сейчас играюсь на GitHub - pillarjs/hbs: Express view engine wrapper for Handlebars, не вижу причин переключаться с него. С хелперами и инклудами у него норм. Не понимаю как люди пишут на ejs.

Еще имеет смотреть на количество загрузок пакета. express-handlebars - npm. Оно которое выглядит отличным.


Мне морочит голову изоморфный рендеринг. Хочу иметь его. Но простого решения не нашел. Писать и клиентские и серверные темплейты на реакте не хочу. Getting started | Marko обещает легкий серверный рендеринг, но смотрел я в него только один день, хорошо еще не подумал. Изоморфные handlebars с виртуальным DOM-ом на клиенте были бы идеальными (+ для стейта бы взял mobx).

Таким примером react/redux для изоморфного (вернее universal) рендеринга со мной поделились GitHub - erikras/react-redux-universal-hot-example: A starter boilerplate for a universal webapp using express, react, redux, webpack, and react-transform

В нашей компании мы используем сугубо фронтовую шаблонизацию, так намного проще и удобнее работать.

А SEO-шники не жалуются?

А чего им жаловаться? все ок индексируется а для сомнительных моментов есть лаба гугла и сервисы что снимки сайта для поисковиков делают