Nós desenvolvedores buscamos constantemente aprimorar nossa habilidade de escrever códigos simples, legíveis e minimalista. É muito comum ao revisarmos nosso código, notar que determinado função poderia ter algumas linhas a menos e ser ainda mais legível e simples, então vamos lá e enxugamos a função. Esse comportamento demonstra nossa paixão e fanatismo por códigos minimalistas, ou seja, nosso objetivo é escrever o menos possível, mas sendo o mais expressivo possível!

O que é um template engine?

É uma ferramenta ou mecanismo que nos ajuda a criar visões baseadas em modelos com sintaxe própria. Levando para o mundo do desenvolvimento web, pense que o template engine nos permite criar um código mais enxuto que será interpretado e transformado em HTML.

Em resumo, é uma forma de escrever código de forma minimalista, abstraindo parte da sintaxe mais verbosa em algo mais enxuto.

Template engine também pode se apresentar como view engine, então tenha em mente que são a mesma coisa.

Vantagens

Existem basicamente três grandes vantagens em utilizar abordagem de template engine, são elas:

Cada solução template engine implementas funções próprias, essas por sua vez podem prover características únicas ou mais genéricas como as citadas nos tópicos acima.

Que template engine escolher?

Essa escolha em geral é bem particular, isso se deve ao fato de que como desenvolvedores podemos nos apegar ao estilo da sintaxe, ao carisma passado por meio da documentação, simplicidade de uso e por ai vai.

Considerando o parágrafo anterior é melhor citar as características que você deve evitar, não só ao trabalhar com template engine, mas com qualquer biblioteca dentro de sua aplicação:

Obviamente existem outras características a serem observadas, porém, essas são primariamente observadas pelos utilizadores e automaticamente levadas em consideração, tais como a complexidade de instalação e uso.

Opções

Não considere a ordem abaixo como uma indicação do melhor para o pior, nem tão pouco que essa lista apresenta todas as opções disponíveis.