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

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

Требования

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

На данный момент найдены неудовлетворительные решения

  1. Mustache : поддерживает рендеринг на стороне сервера и клиента, большое / активное сообщество, но шаблоны «без логики» кажутся очень ограничительными и болезненно.
  2. Node.js плюс подчеркивание : Шаблоны JS, такие как подчеркивание, обеспечивают всю необходимую мне гибкость шаблонов, но их рендеринг на стороне сервера с использованием Node.js ОЧЕНЬ хрупкий. node.js является новым и довольно нестабильным, и его управление пакетами (экспорт ...) требует множества хаков для правильной работы.
  3. Google Closure Templates : они компилируются до JS и Java и имеют много функции, которые я хочу. К сожалению, при просмотре групп Google кажется, что отсутствуют многие базовые функции (например, возможность перебирать ассоциативные массивы ), а документация для создания собственных плагинов очень скудна и болезненный вид. Более того, я не могу сказать, кто из онлайн-сообщества его использует, Google не принимает для этого взносы с открытым исходным кодом, и у них нет пропускной способности для выпуска новых функций.
  4. изотоп : писать шаблоны на JS и использовать Johnson , оболочку Ruby для среды выполнения Mozilla SpiderMonkey JS, чтобы отображать эти шаблоны на стороне сервера. Выглядит многообещающе, но в проекте не было коммитов более 6 месяцев.
  5. Liquid с Liquid.js : язык шаблонов Liquid выглядит превосходно, но проект liquid.js выглядит неплохим. непроверено (нет тестирования в IE!), нет документации, непонятно, использует ли кто-нибудь его, и он давно не обновлялся.

24
задан Yevgeniy Brikman 31 March 2011 в 20:11
поделиться