2009-02-02 4 views
4

За последний год я много слышал о скорости и NVelocity. Чтение их документации и поиск в сети не дали мне ответов, которые я искал.Почему люди используют скорость и/или NVelocity?

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

+1

вы спрашиваете «? зачем использовать двигатель шаблона» или «зачем использовать Velocity в качестве механизма шаблонов?»? Если последнее, ответ будет «вы не должны - есть новые, лучшие двигатели». –

ответ

8

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

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

+0

Так что это не так, как говорят, используя <% ... %><%= .... %> в Rails, Asp.Net-Mvc и т. Д.? Существует ли XSLT как логика «UI»? – Bill

+0

Один из способов судить о различиях заключается в том, чтобы у вас был дизайнер, чтобы сделать макет, насколько хорошо он/она будет платить. Требуется ли дизайнеру изучить ruby ​​/ java/etc, чтобы изменить пользовательский интерфейс? Думаю, ему не нужно его изучать. Однако, возможно, потребуется изучить новые конструкции, такие как taglib. –

+0

Что касается XSLT, я думаю, это зависит от вашего приложения. Если вы показываете какой-то XML, я полагаю, что XSLT - это только логика пользовательского интерфейса, так как вы, как правило, не выполняете никакой другой логики, кроме обработки XML. –

3

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

0

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

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

4

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

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

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

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

0

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

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

0

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

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