Я изучаю шаблоны 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!), Не имеет документации, неясно, использует ли кто-нибудь его, и он не обновлялся через некоторое время.