Подтвердить что ты не робот

Шаблонирование языка как для клиентской, так и для серверной рендеринга

Я изучаю шаблоны JavaScript как способ визуализации наших представлений. Цель состоит в том, чтобы иметь возможность отображать на стороне клиента для пользователей, у которых есть JavaScript, чтобы отображать те же серверы/серверы данных для тех пользователей (и сканеров), которые этого не делают.

Требования

  • Отказ от клиентской стороны.
  • Отправка на стороне сервера (поддержка JVM с хорошим доступом).
  • Разумная поддержка циклов, условных выражений, обработки текста, частичных, макросов и расширений/плагинов.
  • Достаточно большое/активное сообщество пользователей.

Неудовлетворительные решения, найденные до сих пор

  • Mustache: поддерживает рендеринг на стороне сервера и клиента, большое/активное сообщество, но шаблоны без "логики" выглядят очень ограничительными и болезненный.
  • Node.js plus underscore: JS-шаблоны, такие как подчеркивание, обеспечивают всю гибкость шаблона, в которой я нуждаюсь, но рендеринг их на стороне сервера с использованием Node.js ОЧЕНЬ хрупкий. Node.js является новым и довольно неустойчивым, и его управление пакетами (экспорт...) требует большого количества хаков для правильной работы.
  • Google Closure Templates: они скомпилируются с JS и Java и имеют множество функций, которые я хочу. К сожалению, просматривая группы Google, похоже, что отсутствуют многие основные функции (например, возможность цикл над ассоциативными массивами) и документация для создания ваших собственных плагинов очень скудна и болезненна. Более того, я не могу сказать, кто в онлайновом сообществе использует его, Google не принимает вклады от открытого источника для него, и у них нет полосы пропускания для выпуска новых функций.
  • isotope: писать шаблоны в JS и использовать Johnson, оболочку Ruby для среды выполнения Mozilla SpiderMonkey JS, чтобы отобразить эти серверные серверные шаблоны. Кажется многообещающим, но проект не совершил более 6 месяцев.
  • Liquid с Liquid.js: Жидкий язык шаблонов выглядит превосходно, но проект liquid.js кажется непроверенным (без тестирования в IE!), Не имеет документации, неясно, использует ли кто-нибудь его, и он не обновлялся через некоторое время.
4b9b3361

Ответ 2

Используйте EJS. Он в значительной степени получил все функции, которые вы задаете.

Он может использоваться с express.js из коробки, и он отлично работает на клиенте.

В качестве бонуса я бы использовал backbone.js для выполнения MVC на клиенте и сервере.

Конечно, это зависит от node.js. Я чувствую, что использование экспресс, теперь и позвоночника позволяет вам много стабильного управления с помощью node.js. Не говоря уже о том, что SSJS просто потрясающе, и повторное использование кода фантастично.