Cours 1¶

Introduction¶
Fini le développement Web rudimentaire qui consistait à coder tout manuellement. Cette session, on introduit des standards de l'industrie pour passer en mode professionnel. Nous apprendrons à :

Utiliser les lignes de commande (CLI)

Automatiser le développement Web avec des composantes.

Confectionner des interfaces animées et interactives
Yet another intro sur l'intelligence artificielle 😅¶
En 2026, l'intelligence artificielle est indissociable du développement Web. Le vibe coding devient plus populaire que jamais.
En fait, la programmation en chat n'est même plus tant utilisée. On est plus à l'ère des agents autonomes qui codent et exécutent des vagues d'actions complexes pour nous. On pense notamment à Github Copilot, Codex d'OpenAI ou Claude Code d'Anthropic.

Ces modèles reposent sur l'usage de tokens et d'une large fenêtre de contexte. Plus il y a de contexte, plus l'IA « comprend » l'application globale.
C'est génial, non ?¶
Le vibe coding et l'agentic coding favorisent malheureusement la paresse intellectuelle. Sans compréhension technique pour superviser l'agent, on troque la rigueur contre une perte de contrôle sur le code qu'on ne comprend plus.
Prenez votre temps 🧘
Prenez le temps de comprendre le code généré, de lire les explications, de remettre en question les solutions proposées et de valider les décisions prises par l’agent.
Plan de cours¶
CSS Grid¶

En Web 2, vous avez vu Flexbox. Il y a juste une dernière notion à connaitre pour avoir fait le tour du CSS, le display: grid;.
Le système de grille permet, pour sa part, d’organiser une page Web en lignes et colonnes, un peu comme un tableau invisible sur lequel on place des éléments.
Contrairement à Flexbox, qui aligne les éléments les uns après les autres dans un seul axe (horizontal OU vertical), Grid est pensé pour gérer les deux axes en même temps. Donc avec grid, il n'y a pas de principe d'orientation comme en flex.
Quand l'utiliser ?¶
- Pour construire des layouts de page (header, nav, aside, main, footer).
- Pour des galeries d’images où les items doivent s’adapter automatiquement.
- Pour organiser du contenu sous forme de tableaux flexibles et responsives.
https://jfcmontmorency.github.io/css-grid-playground/
Activer Grid¶
<div class="grille">
<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>
<div>E</div>
</div>
.grille {
display: grid;
}
Tous les enfants directs deviennent des items de la grille, mais pour que le comportement de grille se fasse voir, il faut spécifier les colonnes / lignes. Sinon on dirait de simples div normales.
Colonnes et lignes¶
Les propriétés grid-template-columns et grid-template-rows sont la base pour créer un quadrillage précis.
grid-template-columns¶
Définit la largeur des colonnes de la grille.
.grille {
display: grid;
grid-template-columns: 100px 1fr 100px;
}
Crée 3 colonnes :
- une fixe de 100px
- une fluide qui prend l’espace restant (1fr = 1 fraction)
- une fixe de 100px
grid-template-rows¶
Définit la hauteur des rangées.
.grille {
display: grid;
grid-template-rows: 100px auto 50px;
}
Crée 3 lignes :
- une de 100px
- une qui s’adapte au contenu (auto)
- une de 50px
Raccourcis utiles¶
grid-template-columns: repeat(3, 1fr);
/*
est identique à
grid-template-columns: 1fr 1fr 1fr;
*/
/*
Chaque colonne doit avoir au moins 150px,
mais peut grandir jusqu’à occuper une fraction de l’espace dispo.
*/
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
À vous de jouer
Avant de continuer, recréez une grille de 4 colonnes égales et 2 rangées de 100px chacune (grid-template-columns + grid-template-rows) directement dans un des CodePen ci-dessus.
Zones¶

La propriété grid-template-areas donne un nom à des zones de la grille. Ça sert à être plus lisible et facile à maintenir.
.grille {
display: grid;
grid-template-columns: 30px 1fr 1fr;
grid-template-rows: 60px 1fr;
grid-template-areas:
"allo allo allo"
"bravo cadeau cadeau";
}
Puis on assigne chaque élément :
.div1 { grid-area: allo; }
.div2 { grid-area: bravo; }
.div3 { grid-area: cadeau; }
Espacements¶

Propriétés :
column-gap: espace entre les colonnesrow-gap: espace entre les lignesgap: raccourci pour les deux
.grille {
gap: 20px; /* colonnes ET rangées */
column-gap: 30px; /* juste colonnes */
row-gap: 10px; /* juste rangées */
}
Alignement global du contenu¶
Les propriétés justify-content et align-content gèrent l’alignement de l’ensemble de la grille, pas des items individuellement.
justify-content¶

Aligne la grille entière horizontalement dans le conteneur, si celui-ci est plus large que la somme des colonnes.
.grille {
justify-content: center; /* centre la grille horizontalement */
}
align-content¶

Aligne la grille entière verticalement, si la hauteur du conteneur est plus grande que celle des lignes.
.grille {
align-content: space-between;
}
Alignement des items dans les cellules¶
align-items / justify-items¶


Les propriétés align-items et justify-items contrôlent l’alignement par défaut des items dans leurs cellules.
.grille {
//...
align-items: end;
justify-items: center;
}
Tous les enfants s’aligneront ainsi, sauf si un item définit ses propres règles.
align-self / justify-self¶


Permettent d’aligner un item individuel dans sa cellule.
.item {
align-self: end;
justify-self: center;
}
place-items¶
place-items est un raccourci pratique qui combine align-items (axe vertical) et justify-items (axe horizontal) en une seule propriété.
.grille {
/* équivalent à align-items: center; justify-items: center; */
place-items: center;
}
Note : place-items s'applique au conteneur de la grille et définit l'alignement par défaut pour tous les items. Les propriétés individuelles align-self / justify-self peuvent toujours être utilisées pour surcharger l'alignement d'un item spécifique.
Placement manuel¶
Les propriétés de positionnement permettent de définir précisément où commence et finit un élément dans la grille.
grid-row-start / grid-row-end¶
Définissent sur quelle ligne horizontale un item commence et finit :
.item {
grid-row-start: 1; /* commence à la 1ère ligne horizontale */
grid-row-end: 3; /* finit avant la 3e ligne horizontale */
/* L'item occupe donc les rangées 1 et 2 */
}
grid-column-start / grid-column-end¶
Définissent sur quelle ligne verticale un item commence et finit :
.item {
grid-column-start: 2; /* commence à la 2e ligne verticale */
grid-column-end: 5; /* finit avant la 5e ligne verticale */
/* L'item occupe donc les colonnes 2, 3 et 4 */
}
Note : Il est possible d'utiliser des valeurs négatives 🤪 Elles comptent à partir de la fin de la grille : -1 correspond à la dernière ligne, peu importe le nombre de colonnes ou de rangées.
.item {
grid-column: 1 / -1; /* occupe TOUTE la largeur de la grille, du début à la fin */
}
Raccourcis grid-column / grid-row¶

Les propriétés grid-column et grid-row permettent à un item d’occuper plusieurs cases de la grille.
.item {
/* Raccourci pour grid-column-start: 2 et grid-column-end: 5 */
grid-column: 2 / 5;
/* Raccourci pour grid-row-start: 1 et grid-row-end: 3 */
grid-row: 1 / 3;
}
Très utile pour créer des mises en page asymétriques (un bloc plus grand que les autres).
Raccourci des raccourcis grid-area¶

grid-area combine toutes les propriétés de positionnement en une seule ligne :
.item {
grid-area: 1 / 5 / 4 / 6;
// Équivalent à :
// grid-row-start: 1
// grid-column-start: 5
// grid-row-end: 4
// grid-column-end: 6
}
L'ordre des valeurs est : row-start / column-start / row-end / column-end
Note sur le mot-clé span¶
Dans le système grid, span est un mot-clé utile pour indiquer qu'un item doit occuper un certain nombre de lignes ou colonnes sans préciser explicitement l'index de fin.
/*
Commence à la colonne 2 et s'étend sur 3 colonnes (2,3,4)
Équivalent de : .item { grid-column: 2 / 5; }
*/
.item { grid-column: 2 / span 3; }
En résumé : trois façons de positionner un item¶
| Propriété | Quand l'utiliser | Exemple |
|---|---|---|
grid-template-areas + grid-area: nom |
Mise en page nommée et facile à visualiser (header / nav / main / footer) | grid-area: header; |
grid-column / grid-row |
Placement rapide par numéros de lignes | grid-column: 2 / 5; |
grid-area: r1 / c1 / r2 / c2 |
Positionnement précis en une seule déclaration | grid-area: 1 / 5 / 4 / 6; |
Lignes de commande¶

La ligne de commande est un outil qui permet d’interagir avec un ordinateur (en local ou à distance) en tapant des commandes textuelles.
On écrit ces commandes dans une interface textuelle (CLI) appelé « Terminal » ou « Console ».
Le terminal¶


Aucune installation n'est normalement requise. Un terminal existe déjà sur votre ordinateur.
- Sous Windows, utilisez l'application PowerShell1 (dans le cadre du cours, nous utiliserons plutôt Git Bash)
- Sous macOS, utilisez l'application Terminal2.
- Sous Linux, utilisez l'application Terminal3.
Sacré Windows 😤
C'est bien connu, Windows est très propriétaire dans son approche et ses lignes de commande lui sont propres.
Le hic c'est que dans le monde du Web, la grande majorité des serveurs fonctionnent sous Linux et non sur Windows.
Il est donc important d'apprendre les commandes Linux. Pour ce faire sous Windows, on utilise généralement une alternative à PowerShell (comme Git Bash ou WSL). C'est le moyen le plus simple d'exécuter des lignes de commande Linux sans changer de système.
Au Cégep, « Git Bash » est déjà installé 🙌. Si vous devez l'installer à la maison, consulter le guide d'installation de « Git Bash ».
Il y a plusieurs autres accès pour communiquer en ligne de commande. Par exemple, vscode a une interface de terminal. Github desktop aussi.
Commandes courantes¶
Lorsque vous naviguez dans Windows, vous utilisez une interface graphique. Vous cliquez sur des fenêtres et des dossiers pour vous déplacer sur votre ordinateur. En réalité, cette interface n’est qu’une façade. En arrière-plan, le système exécute des commandes pour réaliser chacune de vos actions.
Nous allons maintenant apprendre à naviguer sur l’ordinateur uniquement à l’aide de la ligne de commande.
Voici une petite introduction aux commandes pwd, ls et cd (à consulter en plein écran) :
Répertoire courant : pwd¶
La commande pwd affiche le chemin complet du dossier dans lequel vous vous trouvez actuellement.
pwd
# /c/Users/jfcartier/OneDrive/Desktop

Liste : ls¶
La commande ls est utilisée pour lister le contenu d'un répertoire.
ls
# mandarine.png
# nofx.jpg
# patate-pilee.html
# un-dossier
# v.jpg

Se déplacer : cd¶
La commande cd est utilisée pour déplacer dans l'arborescence des dossiers.
Elle fait l'équivalent de double cliquer sur des dossiers dans l'Explorateur Windows.
cd nom_du_dossier

Chemins relatifs¶
Vous vous souvenez des chemins relatifs ?
Chemin relatif : ./images/chat.jpg
Chemin absolu : /c/Users/123456789/OneDrive/Desktop/mon-site-web/images/chat.jpg
Le chemin relatif qui commence par un "." veut dire que le chemin commence par le répertoire courant.
Admettons qu'on se trouve dans le répertoire mon-site-web, le point est un raccourci pour écrire : /c/Users/123456789/OneDrive/Desktop/mon-site-web.
pwd
# /c/Users/123456789/OneDrive/Desktop/mon-site-web
cd images
pwd
# /c/Users/123456789/OneDrive/Desktop/mon-site-web/images
Parent¶
Si le simple point . représente le répertoire courant, le double point .. représente le dossier parent.
pwd
# /c/Users/123456789/OneDrive/Desktop/mon-site-web
cd ..
pwd
# /c/Users/123456789/OneDrive/Desktop
Nouveau dossier : mkdir¶
La commande mkdir est utilisée pour créer de nouveaux répertoires.
mkdir nom_du_dossier

Lire un fichier : cat 😸¶
La commande cat est utilisée pour afficher le contenu des fichiers dans le terminal.
cat README.md
# Vite (French word for "quick", pronounced /viːt/, like "veet") is a build tool
# that aims to provide a faster and leaner development experience for modern web
# projects. It consists of two major parts...
#
# License
# [MIT](LICENSE)
# ...

Dupliquer : cp¶
La commande cp est utilisée pour copier des fichiers ou des répertoires d'un emplacement à un autre.
cp allo.txt salut.txt
Renommer / déplacer : mv¶
La commande mv est utilisée pour déplacer ou renommer des fichiers ou des répertoires.
mv chien.jpg chat.jpg
mv chat.jpg ./images/chat.jpg
Supprimer : rm¶
Les fichiers supprimés ne peuvent pas être récupérés.
La commande rm est utilisée pour supprimer des fichiers.
rm chat.jpg
Supprimer un répertoire¶
Soyez particulièrement prudent, car les répertoires supprimés ne peuvent pas être récupérés.
La commande rm -r est utilisée pour supprimer des répertoires.
Sans le -r, la commande rm ne peut pas supprimer de répertoire.
rm -r nom_du_dossier

Nouveau fichier : touch¶
La commande touch est utilisée pour créer un fichier vide si celui-ci n'existe pas.
touch nouveau.txt

Écriture : echo¶
La commande echo peut ajouter du texte dans un fichier. Si le fichier n'existe pas, il le crée.
echo "Texte à ajouter" >> nom_du_fichier.txt
echo "Texte en deuxième ligne" >> nom_du_fichier.txt
echo "Texte en troisième ligne!" >> nom_du_fichier.txt
echo "Finalement, remplace tout par ceci" > nom_du_fichier.txt
Éditeur de texte¶
Si vous devez écrire un paragraphe ou modifier un fichier existant, il est préférable d'ouvrir un éditeur de texte dans le terminal. L'équivalent de ça c'est vscode.
nano nom_du_fichier.txt
Important 😅
- Pour sauvegarder : Ctrl+O puis Enter
- Pour quitter : Ctrl+X
Bon à savoir (QoL)¶
- Tab permet de compléter une ligne de commande si la suite est évidente
- Up et Down permet de naviguer à travers l'historique des commandes
- Ctrl+C permet d'annuler la commande en cours
- La commande
clearpermet de nettoyer le terminal
Exercices¶

Exercice - grid
Spirale
https://gridcritters.com/
https://stephaniewalter.design/blog/fun-places-to-learn-css-layout-part-2-grid-layout/

Exercice - CLI
Mandala