Cours
Objectifs
Comment générer un site statique ?
Présentation
Générateur de site statique
Programmation Web et bases de donnéesGénérateur de site statique
Site statique
Site statique
Site web (HTML, CSS, JS) dont le contenu est fixe.
Sans contenu dynamique (blog, e-commerce, réseau social, …)
Sans base de données.
Avantages :
Hébergement moins cher et plus simple.
Chargement des pages plus rapide.
Moins de failles de sécurité.
Inconvénients :
Déploiement pour chaque modification.
Similitude des pages.
DRY (Don't Repeat Yourself) : philosophie de programmation
Solution : Utiliser des templates pour générer les pages à partir de données.
Générateur
Générateur

Template (Liquid)
Template (Liquid)
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>{{ title }}</title>
</head>
<body>
<header>
<h1>{{ title }}</h1>
</header>
<main>{{ content | markdown }}</main>
</body>
</html>
Template (Liquid)
Template (Liquid)
−−−
title: Ma page d'accueil
−−−
# Bienvenue
Ceci est ma page d'accueil.
Résultat compilé
Résultat compilé
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Ma page d'accueil</title>
</head>
<body>
<header>
<h1>Ma page d'accueil</h1>
</header>
<main>
<h1>Bienvenue</h1>
<p>Ceci est ma page d'accueil.</p>
</main>
</body>
</html>
Générateur de site statique
Générateur de site statique
11ty
11ty
SSG en JavaScript.
Comment exécuter du JavaScript côté serveur ?
Node.js
Comment installer des dépendances JavaScript ?
npm
Node.js
Node.js
https://nodejs.org/fr/about/branding
Environnement d'exécution JavaScript côté serveur (pas dans un navigateur).
V8 (moteur JavaScript de Google Chrome et Chromium depuis 2008)
Compile le code JavaScript en code machine.
Logiciel libre géré par la communauté OpenJS Foundation.
Compiler vs Interpréter
Compiler vs Interpréter
Compiler
Traduire le code source en code machine.
C ou C++ en langage machine.
JavaScript avec Node.js.
Interpréter
Lire et exécuter le code source ligne par ligne.
Python dans un terminal.
JavaScript dans un navigateur.
npm
npm
https://github.com/npm/logos/tree/master
Gestionnaire de paquets pour JavaScript inclus avec Node.js.
Installer des dépendances (bibliothèques, frameworks, …).
Gérer les versions des dépendances.
Exécuter des scripts (tests, build, …)
Registre de dépendances sur npmjs.com.
Appartient à GitHub depuis 2020 (à Microsoft depuis 2018).
package.json : fichier de configuration
scripts : définition des commandes personnalisées.
dependencies et devDependencies : dépendances du projet.
package-lock.json : version exacte des dépendances utilisées.
node_modules : répertoire des dépendances installées.
package.json
package.json
{
"name": "mon-projet",
"version": "1.0.0",
"description": "Description de mon projet",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Moi",
"license": "GPL-3.0",
"dependencies": {
"express": "^4.17.1"
}
}
npm CLI
npm CLI
Initialiser un projet Node.js :
npm initInstaller une dépendance :
npm install <package>ounpm i <package>Installer une dépendance de développement :
npm install --save-dev <package>ounpm i -D <package>Exécuter le script "start" :
npm startExécuter un autre script :
npm run <script>
Semantic Versioning (semver)
Semantic Versioning (semver)
Numéro de version : MAJEURE.MINEURE.PATCH
Exemple : 1.4.2
Majeur (major) : 1.0.0
Changements majeurs (incompatibles avec les versions précédentes).
Mineur (minor) : 0.1.0
Nouvelles fonctionnalités (rétrocompatibles).
Patch : 0.0.1
Corrections de bugs (pas de changement fonctionnel).
Utilisé par les gestionnaires de paquets
^1.0.0(>= 1.0.0 < 2.0.0)~1.0.0(>= 1.0.0 < 1.1.0)
Versions sans animation, plein écran, imprimable.