Apache Velocity
Apache Velocity | |
---|---|
Тип | Шаблонизатор |
Разработчик | Apache Software Foundation |
Написана на | Java |
Операционная система | Кроссплатформенное ПО |
Первый выпуск | 21 ноября 2006[1] |
Аппаратная платформа | Java Virtual Machine |
Последняя версия | 2.3 (27 февраля 2021) |
Репозиторий | svn.apache.org/repos/asf… github.com/apache/veloci… |
Лицензия | Apache 2.0 license |
Сайт | velocity.apache.org |
Медиафайлы на Викискладе |
Apache Velocity — проект с открытым исходным кодом, развиваемый организацией-фондом Apache Software Foundation. Ранее Apache Velocity был известен как Jakarta Velocity и входил в состав зонтичного проекта Apache Jakarta Project, но впоследствии был выделен в самостоятельный популярный проект. Velocity — это процессор шаблонов (обработчик шаблонов), базирующийся на Java, который обеспечивает простой, но мощный шаблонный язык, не требующий предварительной подготовки модели переменных для шаблона: в шаблон просто передаются ссылки на Java-объекты, а обработчик разбирает указанные методы и посредством Java Reflection API получает их значения. Его цель состоит в том, чтобы гарантировать чистое разделение между уровнем представления и бизнес-уровнем в Веб-приложении (шаблон проектирования Model-View-Controller), однако он не ограничен областью Веб-приложения.
Использование
Некоторые общие типы приложений, которые могут использовать Velocity:
- Веб-приложения: Веб-дизайнеры создают HTML-страницы с указателями мест заполнения, которые будут динамически заменены необходимой информацией. Страницы могут обрабатываются с помощью VelocityViewServlet или любым другим из множества фреймворков, которые поддерживают Velocity.
- Генерация исходного кода: Velocity может использоваться для генерации кода Java, SQL, PostScript, JavaScript, Perl и пр., базирующегося на шаблоне. Множество коммерческих пакетов программного обеспечения и пакетов программного обеспечения с открытым исходным кодом используют Velocity таким способом[2].
- Автоматические электронные письма: Существует множество приложений, генерирующих автоматические электронные письма для регистрации учётных записей или напоминания забытых паролей, а также письма, содержащие автоматически сгенерированные отчёты. При помощи Velocity, шаблон электронного письма, может быть сохранён в виде текстового файла, а не встроен непосредственно в Java-код.
- XML-преобразование: Velocity предоставляет задачу Ant, под названием Anakia, которая читает XML-файл и делает его доступным шаблону Velocity. Общее приложение должно преобразовать документацию, сохранённую в универсальном формате «xdoc», в стилизованный документ HTML.
Пример кода
Пример использования шаблона и простого Java приложения. Исходный текст шаблона с именем template.vm
## Шаблон с именем template.vm <html> <body> ## $foo - это переменная шаблона Hello $foo World! </body> </html>
С помощью символов «##» помечаются однострочные комментарии, символ «$» определяет, что за ним в шаблоне следует имя переменной.
Исходный Java-код приложения, связывающего переменную «name» в Java-коде и переменную «$foo» в шаблоне:
import java.io.*; import org.apache.velocity.*; import org.apache.velocity.app.Velocity; public class HelloVelocityWorld { public static void main(String[] args) throws IOException { Velocity.init(); // инициализация Velocity VelocityContext vc = new VelocityContext(); // создание контекста Velocity String name = "Velocity"; vc.put("foo", name); // атрибут "name" связывается с именем переменной $foo в шаблоне и помещается в контекст Template template = Velocity.getTemplate("template.vm", "utf-8"); // загрузка шаблона с именем template.vm BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // создается выходной поток template.merge(vc, bw); // метод merge() принимает набор данных в виде объекта "vc" и объект потока "bw" bw.flush(); bw.close(); } }
в результате Velocity сгенерирует следующий текст документа:
<html> <body> Hello Velocity World! </body> </html>
Синтаксис и общие концепции шаблона Apache Velocity очень похожи на синтаксис более раннего обработчика шаблонов WebMacro[3], который теперь также является проектом с открытым исходным кодом.
См. также
- WebMacro
- FreeMarker
- xmlc
- JSP
Литература
Примечания
- ↑ https://projects.apache.org/json/projects/velocity.json
- ↑ PoweredByVelocity (неопр.). Velocity Wiki. Wiki.apache.org (30 декабря 2009). Дата обращения: 3 апреля 2011. Архивировано из оригинала 27 июля 2012 года.
- ↑ Apache Velocity — Overview (неопр.). Раздел Acknowledgement. velocity.apache.org (30 ноября 2010). Дата обращения: 29 сентября 2011. Архивировано из оригинала 27 июля 2012 года.
Ссылки
- Официальный сайт (англ.)
- Velocity wiki (англ.)
- Сравнение обработчиков шаблонов для Java (недоступная ссылка) (англ.)