Какой хороший язык шаблонов поддерживается в JavaScript? - PullRequest
18 голосов
/ 24 сентября 2008

Шаблоны - это довольно здоровый бизнес на устоявшихся языках программирования, но есть ли хорошие, которые можно обрабатывать в 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. Я отметил это как ответ, но все еще заинтересован в более портативных решениях.

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

Ответы [ 16 ]

1 голос
/ 24 сентября 2008

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

0 голосов
/ 27 ноября 2017

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

0 голосов
/ 20 июля 2012

Дистальные шаблоны 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>
0 голосов
/ 24 августа 2011

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

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

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

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

0 голосов
/ 17 января 2010

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

0 голосов
/ 28 февраля 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...