Apache Velocity - Apache Velocity

Apache Velocity
Apache Velocity logo.svg
Desenvolvedor (s) Apache Software Foundation
Versão estável
2.3 / 27 de fevereiro de 2021 ; 49 dias atrás  ( 2021-02-27 )
Repositório Repositório de velocidade
Escrito em Java
Sistema operacional Plataforma cruzada
Modelo Motor de template
Licença Licença Apache 2.0
Local na rede Internet velocidade .apache .org

O Apache Velocity lançado pela primeira vez em abril de 2001, é um mecanismo de modelo baseado em Java que fornece uma linguagem de modelo para objetos de referência definidos no código Java. Seu objetivo é garantir uma separação limpa entre a camada de apresentação e as camadas de negócios em um aplicativo da Web (o padrão de design model – view – controller ).

Velocity é um projeto de software de código aberto hospedado pela Apache Software Foundation . Ele é lançado sob a licença Apache . Jon Scott Stevens derivou o nome do AltiVec Velocity Engine no chip PowerPC G4 .

Usos

Alguns tipos comuns de aplicativos que usam o Velocity são:

  • Modelo de mapeamento de corpo de gateway de API da AWS
    Modelo de mapeamento do corpo do AWS API Gateway.
    Aplicativos da Web : os desenvolvedores da Web renderizam estruturas de página HTML . O conteúdo é preenchido com informações dinâmicas. A página é processada com VelocityViewServlet ou qualquer uma das várias estruturas que oferecem suporte ao Velocity.
  • Geração de código-fonte : o Velocity pode ser usado para gerar código-fonte Java , SQL ou PostScript , com base em modelos . Vários pacotes de software de desenvolvimento comercial e de código aberto usam o Velocity dessa maneira.
  • Emails automáticos : muitos aplicativos geram emails automáticos para inscrição de conta, lembretes de senha ou relatórios enviados automaticamente. Usando o Velocity, o modelo de email pode ser armazenado em um arquivo de texto , em vez de incorporado diretamente no código Java.
  • Transformação XML : o Velocity fornece uma tarefa Ant , chamada Anakia, que lê um arquivo XML e o disponibiliza para um modelo do Velocity. Uma aplicação comum é converter a documentação do software armazenada em um formato "xdoc" genérico em um documento HTML estilizado.
  • O AWS API Gateway usa o mecanismo Apache Velocity para modelos de mapeamento de corpo - JSON é a saída.

Exemplos de código

O seguinte modelo :

## Velocity Hello World
<html>
    <body>
        #set( $foo = "Velocity" )
        ## followed by
        Hello $foo World!
    </body>
</html>

processado pelo Velocity produz o seguinte HTML:

<html>
    <body>
        Hello Velocity World!
    </body>
</html>

Outro exemplo usando condições:

#if( $foo < 10 )
    **Go North**
#elseif( $foo == 10 )
    **Go East**
#elseif( $bar == 6 )
    **Go South**
#else
    **Go West**
#end

Modelo de mapeamento do corpo do AWS API Gateway, para 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": "Archived"
        }
        #else
        ":InProgress": {
            "S": "In Progress"
        },
        ":Completed": {
            "S": "Completed"
        }
        #end
    }
}

Outro exemplo com array opcional ; sem condição irá falhar devido a JSON resultante inválido:

{
    "email": "$context.authorizer.claims.email"
    #if ($input.params('countries') != "")
    , "countries": $input.params('countries')
    #end
}

A sintaxe e o conceito geral dos modelos Apache Velocity são semelhantes à sintaxe do mecanismo de modelo WebMacro mais antigo , que agora também é um projeto de código aberto.

Veja também

Referências

Bibliografia

links externos