Могу ли я использовать разделители строк в StringTemplate? Если нет, то какой хороший шаблонизатор?

Мне нужен простой механизм шаблонов, который выполняет только замену имен переменных (мне не нужны другие функции) и может быть настроен на использование разделителей, которые являются строками, а не символами. Например.

new Template("Hello {{topic}}")
  .add("topic", "world")
  .render()

Должен вернуть "Hello world" (код Java может измениться, меня больше волнует синтаксис шаблона)

Причина, по которой мне нужны многосимвольные разделители, заключается в том, что у меня есть несколько шаблонов, которые могут содержать все виды символов, и я хотел бы убедиться, что родные языки шаблонных документов (html, css, js) не конфликтуют с механизмом шаблонов. .

После этого сообщения я попытался использовать StringTemplate, но я не уверен, поддерживает ли он разделители длиной более одного символа (конструктор на ST, похоже, принимает символ разделители вместо строк).

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


person ripper234    schedule 27.11.2011    source источник
comment
Не уверен, что для StringTemplate используется несколько символов, но, по моему опыту, использование пар «‹ ›» не в HTML / XML, а разделители «$» в HTML / XML работают хорошо.   -  person I82Much    schedule 27.11.2011
comment
@ I82Much А как насчет a < b в javascript?   -  person ripper234    schedule 27.11.2011
comment
На самом деле я почти всегда предпочитаю нотацию '$', поскольку считаю, что она очень редко конфликтует с синтаксисом в языках, которые я использую.   -  person I82Much    schedule 27.11.2011
comment
По вопросам StringTemplate я считаю, что список рассылки гораздо лучший источник исчерпывающей информации, чем StackOverflow, к сожалению - см. antlr.org/pipermail/stringtemplate-interest   -  person I82Much    schedule 27.11.2011
comment
@ I82Much - спасибо. На данный момент я думаю, что я просто буду использовать $, но будьте осторожны, применяя шаблон только к небольшому подмножеству моих файлов, поэтому он должен быть достаточно хорошим.   -  person ripper234    schedule 27.11.2011
comment
Хорошо. Раньше я был очень доволен ST. Сейчас это выглядит довольно запутанным, потому что большая часть документации относится к более старым версиям кода. Удачи   -  person I82Much    schedule 27.11.2011
comment
Если все, что вы собираетесь сделать, это несколько замен, действительно ли вам нужен полноценный движок шаблонов? Вы можете легко написать для этого один Template класс.   -  person Bart Kiers    schedule 28.11.2011
comment
@BartKiers - Да, мог бы. И мне нужно будет его протестировать и отладить.   -  person ripper234    schedule 28.11.2011
comment
Я считаю, что если бы потребовалась только такая простая замена, тестирование и отладка были бы сведены к минимуму. Возможно, потребуется меньше времени, чем просить здесь предложения и узнать, как использовать существующий движок шаблонов :)   -  person Bart Kiers    schedule 28.11.2011
comment
@BartKiers - но научиться пользоваться чем-то новым полезно само по себе. Так или иначе...   -  person ripper234    schedule 28.11.2011


Ответы (2)


Я думаю, что Velocity от Apache - лучший движок для создания шаблонов. Мы используем его для множества вещей: генерации динамического HTML (вместо JSP), генерации XML вместо XSLT и т. Д.

person duffymo    schedule 27.11.2011
comment
Можете ли вы случайно дать фрагмент кода, который реализует указанный выше шаблон, с настраиваемыми разделителями? - person ripper234; 27.11.2011

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

новый ST («Привет« prop »», '«', '»') .add («prop», «xxxxxx»). render ()

person Sriram Srinivasan    schedule 20.06.2012