Почему люди используют Velocity и / или NVelocity? - PullRequest
4 голосов
/ 02 февраля 2009

За последний год я много слышал о Velocity и NVelocity. Чтение их документации и поиск в сети не дали мне ответов, которые я искал.

В какой ситуации я бы использовал эту библиотеку в своей разработке? Какую проблему это решает, у которой еще не было решения?

Ответы [ 6 ]

8 голосов
/ 02 февраля 2009

С момента появления веб-приложений люди начали задумываться о разделении интересов во многих приложениях, включая веб-приложения. Задача состоит в том, чтобы отделить код представления от бизнес-кода или логического кода. Когда впервые появился jsps, многие люди, которые напрямую кодировали много логики в jsps (например, доступ к базе данных и т. Д.), Нарушали базовый принцип разделения интересов (jsps должен отвечать за представление, а не за логика).

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

4 голосов
/ 03 февраля 2009

Я думаю, что важно отметить, что по сравнению с JSP / ASP.NET в качестве механизма шаблонов, Velocity / NVelocity действительно «поддерживает» разделение проблем.

При использовании <% ..%> JSP / ASP.NET разрешен любой код Java / .NET. Вот почему иногда вы видите код бизнес-логики в этих файлах.

С Velocity / NVelocity вы не можете вставлять длинные серии кода. Вместо этого вы действительно вынуждены передавать вычисленные значения, которые Velocity / NVelocity берет и отображает в соответствии с тем, как разработан шаблон.

Еще один момент заключается в том, что они могут работать вне среды веб-контейнера (по крайней мере, Velocity может AFAIK). Представьте, что вы разработали шаблон отчета с JSP / ASP.NET. Он отлично работает из Интернета. И затем внезапно появляется запрос на изменение, чтобы сделать это из настольного приложения. Вместо того, чтобы встраивать в него веб-контейнер, вы можете инициализировать Velocity / NVelocity, вычислить значения и визуализировать шаблон.

3 голосов
/ 02 февраля 2009

Это шаблонный движок. Если у вас много статического текста с переменным содержимым, шаблоны - отличный способ сократить объем работы, которую вам нужно выполнить. Он намного лучше, чем String.Format или множество конкатенаций, потому что он не такой повторяющийся или подвержен ошибкам, и гораздо более удобен в обслуживании, поскольку вы можете точно определить, что делает ваш шаблон, просто взглянув на него.

0 голосов
/ 23 декабря 2013

1 - движок Velocity фактически объединяет данные реального времени с файлом xyz.vm, который содержит статическую информацию
2 - В файле vm используется язык шаблонов Velocity (VTL) ) (он может выполнять итерацию по java-итерируемым java-объектам, помещенным в контекст, может вызывать методы, доступные для объектов, помещенных в контекст) *

Ситуации для использования Velocity - Придает мощь Java в html , а не только в html
1 - когда вам приходится генерировать сообщения с часто изменяющимися данными и постоянным стилем. (Поддержка foreach)
2-Когда вы хотите объединить данные в реальном времени с фиктивным заполнителем в глубоко вложенное содержимое
3-Когда вы хотите определить информацию о стиле на основе значения данных (если еще поддерживает)
и многие другие
См. - http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html

0 голосов
/ 03 февраля 2009

В качестве бонуса, для заинтересованных, я рекомендую прочитать следующее:

Это ссылки на StringTemplate, движок шаблонов от Terence Parr, который написал antlr, парсер, который используется везде (например, hibernate использует antlr).

0 голосов
/ 03 февраля 2009

Мы используем шаблоны для создания файлов конфигурации для производства, UAT, тестирования системы, систем на случай непредвиденных обстоятельств и т. Д.

У нас есть главный файл конфигурации Spring, в который мы внедряем файл свойств. У нас есть главный файл свойств, который анализируется Velocity, и это позволяет нам хранить все системные настройки в одном файле.

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