Un template, ou modèle, représente un fichier ou une structure préétablie servant de point de départ pour générer de manière dynamique des contenus ou des pages web. En général, il associe une structure HTML pour définir la mise en page, une mise en forme CSS pour styliser le contenu, ainsi que des espaces réservés ou des balises spécifiques qui seront substitués par des données réelles lors de l’exécution, souvent à travers un langage de programmation tel que PHP, JavaScript, Python, Ruby, et autres.

Les templates sont largement employés dans les CMS (Content Management Systems) ou les frameworks web afin de séparer la logique métier (traitement des données) de la présentation (affichage). Ils facilitent ainsi la création de pages web personnalisées en intégrant de manière dynamique des données provenant de bases de données ou d’autres sources.

Le fonctionnement d’un template est basé sur un fichier codé définissant la structure globale d’une page web ou d’un ensemble de pages d’un site web de manière cohérente. Ce fichier de base contient des éléments statiques de mise en page déjà agencés et mis en forme, ainsi que des variables ou des résultats de fonctions, des éléments dynamiques interpolés sous forme de chaînes de caractères. Ces templates sont regroupés dans un thème, l’ensemble des fichiers composant la structure de présentation d’un site web. L’affichage de ces modèles de page peut varier en fonction de la chaîne de requête qui définit le modèle ou l’ensemble de modèles à utiliser pour afficher la page.

Un template peut être décomposé en plusieurs sous-modèles, appelés layouts, qui sont des modèles spécifiques déterminant l’agencement des éléments, des sections, des blocs ou des compositions. Des synonymes courants de template incluent gabarit, modèle de document, structure générale du document, squelette ou page vierge. En outre, il est intéressant de consulter les termes apparentés tels que thème et layout.

Voici quelques exemples de moteurs de template basés sur la manipulation du DOM : Blade (Laravel), EJS, Liquid (Shopify), Jade, Pixelarity, Pug, Smarty