Aller au contenu

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 ?

Ouais. On sait que ça favorise la paresse intellectuelle, et alors ? Tant pis, tout le monde le fait 🤷

Partons de là, mais essayons de développer des compétences en chemin tout de même.

Ça passe par l'attitude. On pourrait le voir de 2 manières. Soit on utilise l'IA comme :

  • tremplin pour accomplir en se développant (active le processus cognitif pour comprendre)
  • raccourci pour accomplir en se débarrassant (sans exploiter le processus cognitif)

Github Copilot Educationnel

CSS Grid

En Web 2, vous avez vu Flexbox. Il reste une dernière petite notion pour avoir fait le tour de la mise en page en CSS : le display: grid;.

Le système de grille 1 permet d'organiser une page Web en lignes et colonnes, un peu comme un tableau invisible sur lequel on place des éléments.

flexbox vs. grid

Usages de flexbox : Une barre de navigation, une rangée de boutons, un groupe d'étiquettes
Usages de grid : Le squelette d'une page, une galerie, un tableau de bord, tableau responsive.

Activer Grid

Par défaut, une grille crée une seule colonne et autant de rangées qu'il y a d'enfants.

HTML
<div class="grille">
  <div>E1</div>
  <div>E2</div>
  <div>E3</div>
  ...
</div>

Hauteur non spécifiée (automatique)

.grille { display: grid; }

Hauteur spécifiée

.grille { display: grid; height: 260px; }

Exercice - CSS
Grid | La base

Colonnes et lignes

Les propriétés grid-template-columns et grid-template-rows sont la base pour créer un quadrillage.

grid-template-columns

Pour définir des colonnes, on inscrit des largeurs séparées par des espaces. Les enfants de la grille occuperont ces dimensions.

.grille {
  display: grid;
  grid-template-columns: 300px auto;
}

/*
Affiche 2 colonnes :
|-------------|---------------------------------|
     300px                   auto
*/

Bien que cet exemple soit assez fréquent, parfois on veut une structure un peu plus complexe et dynamique. On travaillera alors avec la notion de fraction.

Pour ce faire avec grid, nous utiliserons, non pas l'unité de pourcentage, mais plutôt l'unité de mesure de fraction : fr.

Colonnes en fractions

.grille { display: grid; grid-template-columns: 1fr 2fr 1fr; }

Les programmeurs sont paresseux

Admettons que je veuille faire une grille pour un calendrier. Ça me prend 7 colonnes pour chaque jour de la semaine.

Je pourrais faire :

grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;

mais la fonction repeat permet de faire ça plus proprement :

grid-template-columns: repeat(7, 1fr);

grid-template-rows

Définit la hauteur des rangées.

.grille {
  display: grid;
  grid-template-rows: 100px auto 50px;
}

/*
Affiche 3 lignes :
- une de 100px de haut
- une qui s'adapte au contenu (auto)
- une de 50px de haut
*/

Rangées

.grille { display: grid; grid-template-rows: 140px 70px; }

Notez ceci

Quand on configure par exemple 2 lignes, le navigateur va déjà prévoir la hauteur, même si aucun enfant n'est présent.

Espacements

Propriétés :

  • column-gap : espace entre les colonnes
  • row-gap : espace entre les lignes
  • gap : raccourci pour les deux
Exemple
.grille {
  gap: 20px;              /* colonnes ET rangées */
  column-gap: 30px;       /* juste colonnes */
  row-gap: 10px;          /* juste rangées */
}

Exercice - CSS
Grid | Mise en page

Fusion de cellule

Ah là ça commence !

Maintenant qu'on a configuré la grille, on peut configurer les enfants et c'est là que ça devient vraiment intéressant ! Un enfant n'est pas contraint d'exister dans une cellule. Il peut s'étendre sur plusieurs.

Pour cela, on peut spécifier de où à où il doit aller, sur les colonnes comme sur les lignes.

Exemple
.enfant {
  grid-column: 1 / 3; /* De la ligne 1 à la ligne 3 (2 colonnes) */
  grid-row: 1 / 2; /* De la ligne 1 à la ligne 2 (1 rangée) */
}

Fusionner des cellules

.enfant { grid-column: 2 / 4; grid-row: 2 / 4; }

Span

On peut aussi configurer le nombre de cases à occuper sans spécifier d'emplacement.

.enfant-x { 
  grid-column: span 2;
  /* occupera 2 colonnes à partir de son emplacement */
}

Exercice - CSS
Grid | Spirale

Responsive

repeat + auto-fit = responsive !
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
Config Rôle
minmax(150px, 1fr) Chaque colonne fait au minimum 150px, et au maximum une part de l'espace disponible
auto-fit Le navigateur calcule lui-même combien de colonnes entrent, au lieu d'un nombre fixe

Résultat : la galerie passe toute seule de 4 colonnes sur un écran large à 1 colonne sur un téléphone. Aucun point d'arrêt à écrire.

Les valeurs négatives

Les lignes se comptent aussi à partir de la fin : -1 est toujours la dernière ligne, peu importe le nombre de colonnes.

.item {
  grid-column: 1 / -1; /* occupe TOUTE la largeur de la grille, du début à la fin */
}

Régions

Tout ça pour en arriver aux régions (areas).

Avec grid-template-areas, il est possible de concevoir le modèle de la grille avec des mots clés en css ! Ensuite, on assigne à l'enfant le mot clé avec la propriété grid-area et voilà, l'enfant va se positionner dans le layout.

<div class="grille">
  <div class="enfant"></div>
  ...
</div>
.grille { display: grid; grid-template-columns: 2fr 5fr; grid-template-rows: 50px 1fr; grid-template-areas: 'sidebar header' 'sidebar main'; } .enfant { grid-area: sidebar; }

DONC, pour reproduire le layout, on aurait :

<div class="grille">
  <div class="enfant1"></div>
  <div class="enfant2"></div>
  <div class="enfant3"></div>
</div>
.grille {
  display: grid;
  grid-template-columns: 2fr 5fr;
  grid-template-rows: 50px 1fr;
  grid-template-areas:
    'sidebar header'
    'sidebar main';
}
.enfant1 {
  grid-area: sidebar;
}
.enfant2 {
  grid-area: header;
}
.enfant3 {
  grid-area: main;
}

Ordre des contenus et accessibilité

Notez qu'il est important que l'ordre des contenus dans le HTML reste logique.

En effet, l'usage de grid-template-areas fonctionne avec n'importe quel ordre du contenu. Cependant, les liseuses vont lire le contenu HTML séquentiellement.

Exercice - CSS
Grid | Squelette

Alignement global du contenu

Les configurations d'alignement ressemblent beaucoup à celles de flexbox.

Sur le conteneur : la grille entière

Sur le conteneur : tous les items

Sur l'item 3 seulement

1
2
3
4
5
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ée « Terminal » ou « Console ».

Le terminal

Terminal

Terminal sur Mac

PowerShell

Terminal sur Windows

Aucune installation n'est normalement requise. Un terminal existe déjà sur votre ordinateur.

  • Sous Windows, utilisez l'application PowerShell2 (dans le cadre du cours, nous utiliserons plutôt Git Bash)
  • Sous macOS, utilisez l'application Terminal3.
  • Sous Linux, utilisez l'application Terminal4.

Windows ...

Windows a ses propres lignes de commande.

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).

Au Cégep, « Git Bash » est déjà installé 🙌. Si vous devez l'installer à la maison, consultez le guide d'installation de « Git Bash ».

Plein d'alternatives

Il y a plusieurs autres accès pour communiquer en ligne de commande. Par exemple, VS Code 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 vrai, c'est juste une façade. En arrière-plan, le système exécute des commandes pour réaliser chacune des actions.

Nous allons maintenant apprendre à naviguer sur l’ordinateur uniquement à l’aide de la ligne de commande.

Voici une petite introduction aux commandes de base pwd, ls et cd :

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

pwd

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

pwd

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

cd

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.

Nouveau dossier : mkdir

La commande mkdir est utilisée pour créer de nouveaux répertoires.

mkdir nom_du_dossier

mkdir

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)
# ...

cat

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.

Renommer
mv chien.jpg chat.jpg
Déplacer
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

rm

Nouveau fichier : touch

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

touch nouveau.txt

touch

É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 clear permet de nettoyer le terminal

Exercices

Exercice - CLI
Mandala