43ª Reunião Presencial - 23/11/2013

http://netponto.org

The power of templating…
... with NVelocity
Nuno Cancelo
Patrocinador “GOLD”

Twitter: @PTMicrosoft
http://www.microsoft.com/portugal
Patrocinadores “Silver”
Patrocinadores “Bronze”
Próximas reuniões presenciais
23/11/2013 – Novembro (Lisboa)
30/11/2013 – Novembro (Porto)
14/12/2013 – Dezembro (Lisboa)
...
Licença
Attribution 3.0 Unported
You are free:
• to Share - to copy, distribute and transmit the work
• to Remix - to adap...
Nuno Cancelo
Computer Science Engineer

• Licenciado em Eng. Informática e de Computadores (ISEL)

• Tirar o mestrado em E...
Agenda
• Why Templating
• NVelocity
• Sintaxe
–Referências
–Diretivas
–Pontas Soltas
Why Templating?
Template
– Utilizado desde o início dos tempos
– Em diversas áreas

– Em todas as empresas
– É a identificação de um padrã...
Padrões de Desenho
• Separation of Concerns
– AOP
– HTML/CSS/Javascript

• MVC
– Model
– View
– Controller
Template Engine
Casos de Uso:
– Geração de páginas HTML
– Geração de emails

– Geração de código automático
– Geração de f...
NVelocity
“Why do people use Velocity and/or NVelocity?”

“Since the dawn of web apps, people started to
think about separation of c...
NVelocity
• Port do projeto Apache Jakarta Velocity
• Simples
– Aprender
– Usar
– Estender
• Projecto popular: “Castle Pro...
NVelocity
Prós
• Separação de Responsabilidades
• Linguagem fácil de aprender
• Sintaxe igual ao Velocity
• Utilizado para...
NVelocity
Contras
• Linguagem interpretada
• Documentação dispersa
• Comunidade pouco ativa
• Projetos ‘parados’
NVelocity
Instalação
• Nuget
– Castle Project (V1.0.3 e V.1.1.1)

• Castle Project
– http://sourceforge.net/projects/castl...
“Hello World”
NVelocity
Sintaxe
NVelocity – Síntaxe
Velocity Template Language (VTL)
• Conjunto de instruções limitado
– Comentários
– Referências
– Diret...
NVelocity – Síntaxe
VTL - Comentários
Comentários
– De linha:
• Começam com ‘##’ e acabam no fim da linha

– Multilinha:
•...
NVelocity – Síntaxe
VTL - Referências
Identificadores VTL
– Variáveis:
• $ [ ! ][ { ][ a-z, A-Z ][ a-z, A-Z, 0..9, -, _ ][...
NVelocity – Síntaxe
VTL - Referências
Exemplos de Identificadores VTL
– Variáveis:
• $evento

– Propriedades:
• $Evento.Se...
NVelocity – Síntaxe
VTL - Referências
Identificadores VTL
– Notação Normal
• Utilização habitual. Ex: $evento

– Notação F...
“VTL Demo”
NVelocity – Síntaxe
VTL - Diretivas
• Começam sempre por #
• Podem ter { }
• Acabam sempre por #end
– Excepto o #SET

• É ...
NVelocity – Síntaxe
VTL - Diretivas
#SET
– Estabelece o valor do identificador VTL
– #set( $evento = “Netponto” )
– Suport...
NVelocity – Síntaxe
VTL - Diretivas
Expressões aritméticas:
Operação

Exemplo

Adição

#set( $value = $foo + 1 )

Subtraçã...
NVelocity – Síntaxe
VTL – Diretivas – Controlo de Fluxo
#IF / #IF-#ELSE / #IF-#ELSEIF-#ELSE
#IF (Expressão Booleana)
[ #EL...
NVelocity – Síntaxe
VTL – Diretivas – Controlo de Fluxo
Expressões Booleanas:
Operador

Simbolo

Alternativo

Equals Numbe...
NVelocity – Síntaxe
VTL – Diretivas - Loops
#FOREACH
#FOREACH (Lista)

#END
NVelocity – Síntaxe
VTL – Diretivas - Loops
Fancy Foreach loops:
Directiva

Significado

#EACH

Texto que aparece em cada ...
NVelocity – Síntaxe
VTL - Diretivas
#INCLUDE
Importa um ou vários ficheiro(s) local(ais)
#include ( "one.txt" )

Não é fei...
NVelocity – Síntaxe
VTL - Diretivas
#BREAK
– Pára a rendarização do scope corrente
#break

#STOP
– Pára o processamento do...
NVelocity – Síntaxe
VTL - Diretivas
#EVALUATE
Avaliar referências VTL
#evaluate($foo)
#DEFINE
Atribuir um bloco VTL a uma ...
Keep All Together
NVelocity
Pontas soltas
NVelocity – Síntaxe
VTL - Escaping
Porquê?
– VTL usa o $ e o #
• É necessário apresentar estes símbolos

Como?
– Com o car...
NVelocity – Síntaxe
VTL - Formatação
– As directivas são em minúsculas
– As referências são case sensitive
– Não é necessá...
NVelocity – Síntaxe
VTL - Ranges
• Não existe o #FOR

• Mas o #FOREACH é iterável
– [n..m]
– #foreach( $foo in [1..5] ) $f...
NVelocity – Síntaxe
VTL – Good to Know
• Numero da Iteração através $velocityCount

• Aceder a uma posição da coleção
– $c...
Conclusão
•
•
•
•

Simples de Aprender
Simples de Usar
É possivel ser um motor de views no ASP.NET MVC
Têm potencial para ...
Referências
VTL Reference Guide [visitado Novembro/2013]
– http://velocity.apache.org/engine/releases/velocity-1.5/vtl-ref...
Patrocinador “GOLD”

Twitter: @PTMicrosoft

http://www.microsoft.com/portugal
Patrocinadores “Silver”
Patrocinadores “Bronze”
Próximas reuniões presenciais
23/11/2013 – Novembro (Lisboa)
30/11/2013 – Novembro (Porto)
14/12/2013 – Dezembro (Lisboa)
...
Obrigado!
Nuno Cancelo
nuno.cancelo@gmail.com

@masterzdran

www.facebook.com/nuno.cancelo
www.linkedin.com/in/nunocancelo...
Netponto-The power of templating with NVelocity
Netponto-The power of templating with NVelocity
Netponto-The power of templating with NVelocity
Netponto-The power of templating with NVelocity
Próximos SlideShares
Carregando em…5
×

Netponto-The power of templating with NVelocity

343 visualizações

Publicada em

Publicada em: Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
343
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Netponto-The power of templating with NVelocity

  1. 1. 43ª Reunião Presencial - 23/11/2013 http://netponto.org The power of templating… ... with NVelocity Nuno Cancelo
  2. 2. Patrocinador “GOLD” Twitter: @PTMicrosoft http://www.microsoft.com/portugal
  3. 3. Patrocinadores “Silver”
  4. 4. Patrocinadores “Bronze”
  5. 5. Próximas reuniões presenciais 23/11/2013 – Novembro (Lisboa) 30/11/2013 – Novembro (Porto) 14/12/2013 – Dezembro (Lisboa) 18/01/2014 – Janeiro (Lisboa) Reserva estes dias na agenda! :)
  6. 6. Licença Attribution 3.0 Unported You are free: • to Share - to copy, distribute and transmit the work • to Remix - to adapt the work to make commercial use of the work Under the following conditions: Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work) Source: http://creativecommons.org/licenses/by/3.0/
  7. 7. Nuno Cancelo Computer Science Engineer • Licenciado em Eng. Informática e de Computadores (ISEL) • Tirar o mestrado em Eng. Informática (ISCTE) • Technical Consultant @ CGI
  8. 8. Agenda • Why Templating • NVelocity • Sintaxe –Referências –Diretivas –Pontas Soltas
  9. 9. Why Templating?
  10. 10. Template – Utilizado desde o início dos tempos – Em diversas áreas – Em todas as empresas – É a identificação de um padrão
  11. 11. Padrões de Desenho • Separation of Concerns – AOP – HTML/CSS/Javascript • MVC – Model – View – Controller
  12. 12. Template Engine Casos de Uso: – Geração de páginas HTML – Geração de emails – Geração de código automático – Geração de ficheiros em xml – Complemento de outras ferramentas
  13. 13. NVelocity
  14. 14. “Why do people use Velocity and/or NVelocity?” “Since the dawn of web apps, people started to think about separation of concerns in many applications, including web applications. The challenge is to separate what is view code from what is business code, or logic code. When jsps first arrived, many people where coding lots of logic in jsps directly (stuff like db access and other), breaking the basic principle of separation of concerns (jsps should be responsible for the presentation, not for the logic).” Source: http://stackoverflow.com/questions/503957/why-do-people-use-velocity-and-or-nvelocity
  15. 15. NVelocity • Port do projeto Apache Jakarta Velocity • Simples – Aprender – Usar – Estender • Projecto popular: “Castle Project” (MonoRail) • Utilizado por uma grande empresa portuguesa para gerar código automático
  16. 16. NVelocity Prós • Separação de Responsabilidades • Linguagem fácil de aprender • Sintaxe igual ao Velocity • Utilizado para múltiplos propósitos
  17. 17. NVelocity Contras • Linguagem interpretada • Documentação dispersa • Comunidade pouco ativa • Projetos ‘parados’
  18. 18. NVelocity Instalação • Nuget – Castle Project (V1.0.3 e V.1.1.1) • Castle Project – http://sourceforge.net/projects/castleproject/files/NVelocity/
  19. 19. “Hello World”
  20. 20. NVelocity Sintaxe
  21. 21. NVelocity – Síntaxe Velocity Template Language (VTL) • Conjunto de instruções limitado – Comentários – Referências – Diretivas
  22. 22. NVelocity – Síntaxe VTL - Comentários Comentários – De linha: • Começam com ‘##’ e acabam no fim da linha – Multilinha: • Começam com ‘#*’ e terminam com ‘*#’ – VTL: • Começam com ‘#**’ e terminam com ‘*#’
  23. 23. NVelocity – Síntaxe VTL - Referências Identificadores VTL – Variáveis: • $ [ ! ][ { ][ a-z, A-Z ][ a-z, A-Z, 0..9, -, _ ][ } ] – Propriedades: • $ [ { ][ a-z, A-Z ][ a-z, A-Z, 0.-9, -, _ ]* .[a-z, A-Z ][ a-z, A-Z, 0-9, -, _ ]* [ } ] – Métodos: • $[ { ][ a-z, A-Z ][ a-z, A-Z, 0.-9, -, _ ]* .[a-z, A-Z ][ a-z, A-Z, 0-9, -, _ ]*( [ optional parameter list... ] ) [ } ]
  24. 24. NVelocity – Síntaxe VTL - Referências Exemplos de Identificadores VTL – Variáveis: • $evento – Propriedades: • $Evento.Sessao – Métodos: • $Evento.getAttendees()
  25. 25. NVelocity – Síntaxe VTL - Referências Identificadores VTL – Notação Normal • Utilização habitual. Ex: $evento – Notação Formal • Colocação de { }. Ex: ${evento}. ${evento}1 != $evento1 – Notação Silenciosa • Colocação de ! . Ex: $!evento, $!{evento}
  26. 26. “VTL Demo”
  27. 27. NVelocity – Síntaxe VTL - Diretivas • Começam sempre por # • Podem ter { } • Acabam sempre por #end – Excepto o #SET • É case sensitive – Todas as directivas são em minúsculas – As referências também são case sensitive
  28. 28. NVelocity – Síntaxe VTL - Diretivas #SET – Estabelece o valor do identificador VTL – #set( $evento = “Netponto” ) – Suporta listas, arrays, contantes, literais e variáveis Nota: Admintindo que $evento = “Netponto” “$envento” != ‘$evento’ => Netponto != $evento
  29. 29. NVelocity – Síntaxe VTL - Diretivas Expressões aritméticas: Operação Exemplo Adição #set( $value = $foo + 1 ) Subtração #set( $value = $foo - 1 ) Multiplicação #set( $value = $foo * 1 ) Divisão #set( $value = $foo / 1 ) Resto #set( $value = $foo % 1 )
  30. 30. NVelocity – Síntaxe VTL – Diretivas – Controlo de Fluxo #IF / #IF-#ELSE / #IF-#ELSEIF-#ELSE #IF (Expressão Booleana) [ #ELSEIF (Expressão Booleana) ] [ #ELSE] #END
  31. 31. NVelocity – Síntaxe VTL – Diretivas – Controlo de Fluxo Expressões Booleanas: Operador Simbolo Alternativo Equals Number == eq #if( $foo == 42 ) Equals String == eq #if( $foo == "bar" ) Object Equivalence == eq #if( $foo == $bar ) Not Equals != ne #if( $foo != $bar ) Greater Than > gt #if( $foo > 42 ) Less Than < lt #if( $foo < 42 ) Greater Than or Equal To >= ge #if( $foo >= 42 ) Less Than or Equal To <= le #if( $foo <= 42 ) ! not Boolean NOT Exemplo #if( !$foo )
  32. 32. NVelocity – Síntaxe VTL – Diretivas - Loops #FOREACH #FOREACH (Lista) #END
  33. 33. NVelocity – Síntaxe VTL – Diretivas - Loops Fancy Foreach loops: Directiva Significado #EACH Texto que aparece em cada item #BEFORE Texto que aparece antes de cada item #AFTER Texto que aparece depois de cada item #BETWEEN Texto que aparece entre de cada item #ODD Texto que aparece no item impar #EVEN Texto que aparece no item par #NODATA O conteudo é gerado caso seja nulo #BEFOREALL O que aparece antes de todos os items #AFTERALL O que aparece depoisde todos os items
  34. 34. NVelocity – Síntaxe VTL - Diretivas #INCLUDE Importa um ou vários ficheiro(s) local(ais) #include ( "one.txt" ) Não é feito o render do ficheiro #PARSE Importa um ficheiro local e faz render dele #parse ( "one.vm" )
  35. 35. NVelocity – Síntaxe VTL - Diretivas #BREAK – Pára a rendarização do scope corrente #break #STOP – Pára o processamento do template #break – Útil para debugging
  36. 36. NVelocity – Síntaxe VTL - Diretivas #EVALUATE Avaliar referências VTL #evaluate($foo) #DEFINE Atribuir um bloco VTL a uma referência #define( $block )Hello $who #end #set( $who = 'World!' ) $block
  37. 37. Keep All Together
  38. 38. NVelocity Pontas soltas
  39. 39. NVelocity – Síntaxe VTL - Escaping Porquê? – VTL usa o $ e o # • É necessário apresentar estes símbolos Como? – Com o caracter backslash: ‘’ Resultado? – Comboio de caracteres para apresentar.
  40. 40. NVelocity – Síntaxe VTL - Formatação – As directivas são em minúsculas – As referências são case sensitive – Não é necessária identação – Pode ser tudo numa única linha
  41. 41. NVelocity – Síntaxe VTL - Ranges • Não existe o #FOR • Mas o #FOREACH é iterável – [n..m] – #foreach( $foo in [1..5] ) $foo #end (1 2 3 4 5) – #foreach( $bar in [2..-2] ) $bar #end (2 1 0 -1 -2)
  42. 42. NVelocity – Síntaxe VTL – Good to Know • Numero da Iteração através $velocityCount • Aceder a uma posição da coleção – $collection.get_Item(index) • $Events.get_Item(3) • $Events.get_Item(3).EventName • $Events.get_Item(3).EventLocalization
  43. 43. Conclusão • • • • Simples de Aprender Simples de Usar É possivel ser um motor de views no ASP.NET MVC Têm potencial para curiosos – Geração de Código – Emails – Outros
  44. 44. Referências VTL Reference Guide [visitado Novembro/2013] – http://velocity.apache.org/engine/releases/velocity-1.5/vtl-reference-guide.html Apache Developer Guide [visitado Novembro/2013] – http://velocity.apache.org/engine/devel/developer-guide.html Apache User Guide [visitado Novembro/2013] – http://velocity.apache.org/engine/devel/user-guide.html Castle Project Nvelocity [visitado Novembro/2013] – http://docs.castleproject.org/MonoRail.NVelocity.ashx NVelocity and Collections (and Possibly Arrays) [visitado Novembro/2013] – http://thiglife.com/2008/06/04/nvelocity-and-collections-and-possibly-arrays/
  45. 45. Patrocinador “GOLD” Twitter: @PTMicrosoft http://www.microsoft.com/portugal
  46. 46. Patrocinadores “Silver”
  47. 47. Patrocinadores “Bronze”
  48. 48. Próximas reuniões presenciais 23/11/2013 – Novembro (Lisboa) 30/11/2013 – Novembro (Porto) 14/12/2013 – Dezembro (Lisboa) 18/01/2014 – Janeiro (Lisboa) Reserva estes dias na agenda! :)
  49. 49. Obrigado! Nuno Cancelo nuno.cancelo@gmail.com @masterzdran www.facebook.com/nuno.cancelo www.linkedin.com/in/nunocancelo www.github.com/masterzdran www.bitbucket.org/masterzdran Source: Iconset: Social Media Icons by Iconshock (12 icons) : http://www.iconarchive.com/show/social-media-icons-by-iconshock.html

×