Utiliser Liquid pour créer des templates HTML statiques
Vous ne le savez peut-être pas, mais ce blog est construit avec Jekyll, un générateur de site statique. Jekyll est un excellent outil pour créer des sites web et des blogs simples. Il se base sur la syntaxe de templating Liquid. Cela permet d’inclure du contenu dynamique dans des fichiers HTML statiques. C’est une fonctionnalité très puissante et je me demandais si je pouvais m’en servir en dehors de Jekyll.
Créer des templates avec Liquid
Le réponse est oui ! Vous pouvez tout à fait utiliser le templating Liquid dans vos fichiers HTML statiques. Voici les étapes à suivre:
-
Installer LiquidJS:
npm install -g liquidjs
-
Créez un fichier que vous souhaitez inclure dans plusieurs pages. Par exemple
head.liquid
qui contient l’en-tête de toutes vos pages HTML:<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Beaucoup de métadonnées --> <title>{{ title }}</title> <link rel="stylesheet" href="styles.css"> </head>
-
Ensuite, créez un fichier de template
index.liquid
:<!DOCTYPE html> <html lang="fr"> {% include 'head.liquid', title: 'Titre de la Page' %} <body> Contenu de la Page </body> </html>
Remarquez comment la variable
title
est passée au templatehead.liquid
. Cela vous permet de définir un titre différent pour chacune de vos pages. -
Enfin, exécutez le CLI LiquidJS pour générer le HTML:
npx liquidjs -t @index.liquid -o index.html
Ce qui générera le fichier
index.html
suivant:<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Beaucoup de métadonnées --> <title>Titre de la Page</title> <link rel="stylesheet" href="styles.css"> </head> <body> Contenu de la Page </body> </html>
Et voilà ! Lorsque vous créerez votre prochaine page, vous pourrez réutiliser le
fichier de template head.liquid
et passer le titre de la page. C’est un
exemple très simple mais vous pouvez bien sûr faire beaucoup plus avec le
templating Liquid.
Utiliser LiquidJS dans votre application web
Pour inclure cet outil dans mon application web, j’ai en fait créé un Makefile pour automatiser le processus. La structure de ce projet est la suivante:
_includes/
: Templates Liquid réutilisables (header, footer, etc…)._layouts/
: Structures des pages._pages/
: Chaque page de l’application et leur contenu._static/
: Fichiers statiques (images, styles, scripts, etc…).www/
: Répertoire de sortie pour les fichiers HTML compilés.
Dans l’exemple ci-dessus, les fichiers head.liquid
et index.liquid
iraient
respectivement dans les répertoires _includes
et _pages
. Il n’y a pas de
layouts
dans cet exemple mais vous pouvez en ajouter dans le répertoire _layouts
. Ils
simplifient encore plus vos pages et vous permettent de n’avoir que du contenu
dans vos fichiers de page.
# Dossiers du projet
SRC_DIR := .
INCLUDES_DIR := $(SRC_DIR)/_includes
LAYOUTS_DIR := $(SRC_DIR)/_layouts
STATIC_DIR := $(SRC_DIR)/_static
PAGES_DIR := $(SRC_DIR)/_pages
OUT_DIR := www
# Commande de compilation
CC := npx liquidjs --partials $(INCLUDES_DIR) --layouts $(LAYOUTS_DIR)
# Trouver tous les fichiers statiques pour les copier dans OUT_DIR
STATIC_FILES := $(shell find $(STATIC_DIR) -type f -not -name '.*')
OUTPUT_STATIC := $(STATIC_FILES:$(STATIC_DIR)/%=$(OUT_DIR)/%)
# Trouver tous les fichiers .liquid dans PAGES_DIR pour les compiler en .html
PAGE_TEMPLATES := $(shell find $(PAGES_DIR) -name '*.liquid')
OUTPUT_PAGES := $(PAGE_TEMPLATES:$(PAGES_DIR)/%.liquid=$(OUT_DIR)/%.html)
# Règle pour tout compiler
all: $(OUT_DIR) $(OUTPUT_STATIC) $(OUTPUT_PAGES)
# Règle pour créer le répertoire de sortie
$(OUT_DIR):
mkdir -p $(OUT_DIR)
# Règle pour copier les fichiers statiques
$(OUT_DIR)/%: $(STATIC_DIR)/%
@mkdir -p $(dir $@)
cp -r $< $@
# Règle pour compiler les fichiers .liquid en .html
$(OUT_DIR)/%.html: $(PAGES_DIR)/%.liquid $(INCLUDES_DIR)/* $(LAYOUTS_DIR)/*
@mkdir -p $(dir $@) # Créer le répertoire de sortie si nécessaire
$(CC) -t @$< -o $@
# Nettoyer les fichiers compilés
clean:
rm -rf $(OUT_DIR)
re: clean all
.PHONY: all clean
Lancez simplement la commande make
et ce Makefile compilera tous les fichiers
.liquid
dans _pages
et produira les fichiers .html
résultants dans le
répertoire www
. Vous pouvez ensuite servir www
avec votre serveur web
préféré.
Conclusion
Cette technique permet de réutiliser facilement de l’HTML sur votre site web sans avoir recours au copier-coller, au JavaScript ou à une forme de SSR comme le PHP ou les SSI.