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

Какой хороший язык шаблонов поддерживается в JavaScript?

Шаблоны - довольно здоровый бизнес на установленных языках программирования, но есть ли хорошие, которые можно обработать в JavaScript?

Под "шаблоном" я подразумеваю документ, который принимает объект данных как вход, вставляет данные в какой-то сериализованный язык разметки и выводит разметку. Известными примерами являются JSP, исходный PHP, XSLT.

Под "хорошим" я подразумеваю, что он декларативный и легкий для автора HTML, чтобы писать, что он надежный, и что он поддерживается и на других языках. Что-то лучше, чем варианты, о которых я знаю. Некоторые примеры "нехорошо":


Строковая математика:

element.innerHTML = "<p>Name: " + data.name
    + "</p><p>Email: " + data.email + "</p>";

явно слишком громоздкий, структура HTML не очевидна.


XSLT:

<p><xsl:text>Name: </xsl:text><xsl:value-of select="//data/name"></p>
<p><xsl:text>Email: </xsl:text><xsl:value-of select="//data/email"></p>

//Структурно это работает хорошо, но пусть сталкивается с этим, XSLT смущает разработчиков HTML.


Trimpath:

<p>Name: ${data.name}</p><p>Email: ${data.email}</p>

//Это хорошо, но процессор поддерживается только в JavaScript, и язык является своего рода примитивным (http://code.google.com/p/trimpath/wiki/JavaScriptTemplateSyntax).


Мне бы хотелось увидеть подмножество JSP или ASP или PHP, перенесенных в браузер, но я этого не нашел.

Что люди используют в эти дни в JavaScript для их шаблонов?

Добавление

Через несколько месяцев здесь появилось много рабочих языков шаблонов, но большинство из них нельзя использовать на любом другом языке. Большинство этих шаблонов не могут использоваться вне механизма JavaScript.

Исключение составляет Microsoft - вы можете обрабатывать один и тот же ASP либо в браузере, либо в любом другом ASP-движке. У этого есть свой набор проблем с переносимостью, поскольку вы связаны с системами Microsoft. Я отметил это как ответ, но меня все еще интересуют более портативные решения.

Спасибо за все входные данные!

4b9b3361

Ответ 3

Возможно, вы захотите проверить Mustache - это действительно портативный и простой язык шаблонов с поддержкой javascript среди других языков.

Ответ 4

Я наткнулся на это сегодня, я не пробовал, хотя...

http://beebole.com/pure/

Ответ 5

Закрытие шаблонов - довольно надежная система шаблонов от Google, и они работают как для Javascript, так и для Java. У меня были хорошие впечатления от их использования.

Ответ 7

Я использую Google Closure шаблоны. http://code.google.com/closure/templates/docs/helloworld_js.html

Простая схема, Поддержка BiDi, автоматическое экранирование, оптимизированное для скорости. Кроме того, разбор шаблонов происходит как шаг сборки, поэтому он не замедляет работу клиента. Другое преимущество заключается в том, что вы можете использовать те же шаблоны из Java, если вам нужно сгенерировать свой HTML-код на сервере для пользователей с отключенным JavaScript.

Ответ 8

Tenjin http://www.kuwata-lab.com/tenjin/ Возможно, это то, что вы ищете. Не использовал его, но выглядит хорошо.

Ответ 9

Я написал http://google-caja.googlecode.com/svn/changes/mikesamuel/string-interpolation-29-Jan-2008/trunk/src/js/com/google/caja/interp/index.html, в котором описывается система шаблонов, которая забивает интерполяцию строк на javascript таким образом, который предотвращает атаки XSS, выбирая правильные схема экранирования, основанная на предыдущем контексте.

Ответ 11

Вот один из реализованных в jQuery для языка шаблонов Smarty. http://www.balupton.com/sandbox/jquery-smarty/demo/

Одна из впечатляющих функций - поддержка динамических обновлений. Поэтому, если вы обновите переменную шаблона, она будет обновляться в любом месте шаблона, где используется эта переменная. Довольно изящный.

Вы также можете подключаться к переменным изменениям с помощью события onchange. Таким образом, это полезно для произносимых эффектов или AJAX, когда говорят, что изменяется переменная "страница"; -)

Ответ 13

Если вы используете Script #, вы можете рассмотреть SharpTemplate, сильно типизированный, суперэффективный движок HTML-шаблонов.

Ответ 14

Если вы используете Rhino (Java-реализация JavaScript), вы можете запустить язык шаблона JavaScript по вашему выбору на сервере.

Вы также точно знаете, что результаты шаблона сервера и браузера идентичны. (Если шаблон реализован на двух языках, могут быть некоторые тонкие различия между реализациями.)

... Но теперь, спустя 5 лет (то есть, 2016 год), с Java 8, вы вместо этого используете Nashorn, а не Rhino. Вот вступление к Nashorn, и если вы немного прокрутите список, вы найдете пример шаблона шаблонов Nashorn + Mustahce: http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html

(Лично я использую серверную часть React.js через Nashorn (но React не является языком шаблонов).

Ответ 15

Дистальные шаблоны http://code.google.com/p/distal немного похож на вашу демонстрацию XSLT, но проще:

<p>Name: <span data-qtext="data.name"></span></p>
<p>Email: <span data-qtext="data.email"></span></p>

Ответ 16

Возможно, интересным выбором является https://github.com/rexxars/react-markdown, что является довольно интересным способом включения уценки в ваш пользовательский интерфейс на основе React. Я тестировал его, работает достаточно хорошо, хотя документы приводят меня к пониманию того, что рендеринг HTML приобрел некоторые проблемы в ветке 3.x. Тем не менее, он кажется жизнеспособным вариантом для определенных целей.