# Moteur de template

Un moteur de template (également appelé moteur de modèles ou parseur de modèles) est un logiciel conçu pour combiner des modèles avec un modèle de données afin de produire des documents finaux$^,$$^,$. Ces documents finaux sont souvent des pages Web, mais ils peuvent aussi être d'autres types de documents, tels que des fichiers PDF, des courriels ou des documents XML. Un moteur de modèle fait généralement partie d'un cadriciel web. Il peut également être utilisé comme préprocesseur ou filtre.
Dans le contexte du développement web, un moteur de template est généralement utilisé pour générer dynamiquement des pages HTML. Le processus de génération de pages se déroule généralement côté serveur, bien qu'il puisse aussi se produire côté client avec des frameworks JavaScript modernes.

## Caractéristiques

Les moteurs de modèles incluent généralement des fonctionnalités communes à la plupart des langages de programmation de haut niveau, avec un accent sur les fonctionnalités de traitement du texte brut.
Ces fonctionnalités incluent :
* variables
* évaluation conditionnelle et boucles
* remplacement de texte
* inclusion (ou transclusion ) de fichier
* fonctions

## Fonctionnement général

Un moteur de template fonctionne en suivant un ensemble d'étapes : 1. Chargement des modèles: Les modèles sont chargés dans le moteur. Un modèle, ou template, est un fichier contenant une structure fixe avec des emplacements réservés (placeholders) qui seront remplacés par des données dynamiques. 2. Association des données : Les données nécessaires pour remplir les templates sont collectées, souvent à partir d'une base de données ou d'autres services, et passées au moteur de template. 3. Rendu : Le moteur remplace les emplacements réservés (placeholders) par les données correspondantes, exécute toute logique définie dans le modèle, comme les boucles ou les conditions, et génère le document final - souvent du HTML. 4. Envoi du document : Le document fini est ensuite renvoyé au navigateur client ou au destinataire prévu.

## Logique de Template

La plupart des moteurs de template permettent d'inclure une certaine logique dans les templates, telles que des boucles pour itérer sur des ensembles de données, des conditions pour contrôler le flux de rendu, et des filtres pour formater les données. Cependant, la complexité de cette logique varie selon le moteur de template ; certains prônent une approche minimaliste pour encourager une séparation claire entre la logique métier et la présentation, tandis que d'autres offrent des fonctionnalités plus riches et plus complexes.

## Avantages

* Séparation des préoccupations : Les moteurs de template favorisent une bonne architecture en séparant la logique de l'application de sa représentation visuelle.
* Réutilisabilité : Les templates peuvent être réutilisés dans différentes parties de l'application, voir dans des applications différentes.
* Maintenance : Le fait de séparer les templates de la logique métier de l'application simplifie la mise à jour de la présentation de l'application développée.
* Internationalisation : Les templates facilitent l'adaptation de l'application à différentes langues et cultures locales.

## Quelques exemples de Moteurs de Template

* PHP : Smarty, Twig
* Ruby : Liquid
* Python : Jinja
* JavaScript/Node.js : Handlebars, Mustache
* Java: Jakarta_Server_Pages