Я исследую шаблоны JavaScript как способ визуализации наших представлений. Цель состоит в том, чтобы иметь возможность отображать на стороне клиента для пользователей, у которых включен JavaScript, для отображения тех же шаблонов / стороны сервера данных для тех пользователей (и сканеров), у которых этого не происходит.
Требования
- Рендеринг на стороне клиента.
- Рендеринг на стороне сервера (JVM поддерживает полезность).
- Разумная поддержка циклов, условных выражений, обработки текста, партиалов, макросов и расширений / плагинов.
- Достаточно большое / активное сообщество пользователей.
На данный момент найдены неудовлетворительные решения
- Mustache : поддерживает рендеринг на стороне сервера и клиента, большое / активное сообщество, но шаблоны «без логики» кажутся очень ограничительными и болезненно.
- Node.js плюс подчеркивание : Шаблоны JS, такие как подчеркивание, обеспечивают всю необходимую мне гибкость шаблонов, но их рендеринг на стороне сервера с использованием Node.js ОЧЕНЬ хрупкий. node.js является новым и довольно нестабильным, и его управление пакетами (экспорт ...) требует множества хаков для правильной работы.
- Google Closure Templates : они компилируются до JS и Java и имеют много функции, которые я хочу. К сожалению, при просмотре групп Google кажется, что отсутствуют многие базовые функции (например, возможность перебирать ассоциативные массивы ), а документация для создания собственных плагинов очень скудна и болезненный вид. Более того, я не могу сказать, кто из онлайн-сообщества его использует, Google не принимает для этого взносы с открытым исходным кодом, и у них нет пропускной способности для выпуска новых функций.
- изотоп : писать шаблоны на JS и использовать Johnson , оболочку Ruby для среды выполнения Mozilla SpiderMonkey JS, чтобы отображать эти шаблоны на стороне сервера. Выглядит многообещающе, но в проекте не было коммитов более 6 месяцев.
- Liquid с Liquid.js : язык шаблонов Liquid выглядит превосходно, но проект liquid.js выглядит неплохим. непроверено (нет тестирования в IE!), нет документации, непонятно, использует ли кто-нибудь его, и он давно не обновлялся.
задан Yevgeniy Brikman 31 March 2011 в 20:11
поделиться