Apache Velocity, впервые выпущенный в апреле 2001 года, представляет собой механизм шаблонов на основе Java , который предоставляет язык шаблонов для ссылки на объекты, определенные в коде Java. Его цель — обеспечить четкое разделение между уровнем представления и бизнес-уровнями в веб-приложении ( шаблон проектирования модель-представление-контроллер ).
Velocity — это проект программного обеспечения с открытым исходным кодом , поддерживаемый Apache Software Foundation . Он распространяется под лицензией Apache . Джон Скотт Стивенс получил название от AltiVec Velocity Engine в чипе PowerPC G4 .
Некоторые распространенные типы приложений, использующих Velocity:
Следующий шаблон :
## Velocity Hello World < html > < body > # set ( $ foo = "Velocity" ) ## за которым следует Hello $ foo World! </ тело > </ html >
обработанный Velocity, выдает следующий HTML:
<html> < тело > Привет, мир скоростей! </ тело > </ html >
Другой пример использования условий:
# if ( $ foo < 10 ) **Go North** # elseif ( $ foo == 10 ) **Go East** # elseif ( $ bar == 6 ) **Go South** # else **Go West ** # конец
Шаблон сопоставления тела шлюза AWS API для DynamoDB HTTP:
{ "TableName": "happy-marketer", "KeyConditionExpression": "pk = :pk AND Begins_with(sk, :sk)", # if ($ input . params ( 'projectStatus' ) == 'archived' ) "FilterExpression ": "projectStatus = :Archived", # else "FilterExpression": "projectStatus = :InProgress OR projectStatus = :Completed", # end "ExpressionAttributeValues": { ":pk": { "S": "project" }, " : sk ": { "S": " $ context.authorizer.claims.email " }, # if ($ input.params ( ' projectStatus' ) == ' archived ' ) ":Archived": { " S " : " Архивировано" } # else ":InProgress": { "S": "В процессе" }, ":Completed": { "S": "Завершено" } # end } }
Другой пример с необязательным массивом; без условия завершится ошибкой из-за недопустимого результирующего JSON:
{ "email": " $ context.authorizer.claims.email " # if ( $ input.params ( ' countries' ) ! = " " ) , " countries " : $ input . параметры ( 'страны' ) # конец }
Синтаксис и общая концепция шаблонов Apache Velocity аналогичны синтаксису более старого механизма шаблонов WebMacro , который теперь также является проектом с открытым исходным кодом. [ нужна цитата ]