Linov · Parcours dev
Exercice · Application météo

Le parcours

Huit étapes, de la page blanche à l'application finie. Les durées sont indicatives, elles servent surtout à repérer quand tu es en train de t'enliser.

0 / 0 validé

Coche au fur et à mesure

Chaque étape se termine par les critères « comment tu sais que c'est bon ». Coche-les quand tu les as vraiment vérifiés : ils restent enregistrés dans ce navigateur, et ils font un point de départ parfait quand ton encadrant passe te voir.

0

Mise en place

30 min

Objectif : une page blanche qui s'affiche, avec les trois fichiers correctement reliés entre eux.

À faire

  1. Crée ton dossier de travail et tes trois fichiers (.html, .css, .js). À toi de choisir les noms et l'organisation.
  2. Écris le squelette HTML minimal, puis relie la feuille de style et le script.
  3. Ouvre la page dans le navigateur, puis la console (F12).
  4. Vérifie que les trois fichiers sont bien chargés : un texte visible dans le HTML, une couleur de fond dans le CSS, un console.log dans le JS.

Piège classique

Une balise <script> placée dans le <head> s'exécute avant que le HTML n'existe. Cherche « où placer la balise script », et comprends pourquoi la réponse est ce qu'elle est, ne te contente pas de la déplacer.

Comment tu sais que c'est bon

Ressources

1

La structure de la page

1 h

Objectif : tout le HTML de l'application, sans une seule ligne de JavaScript.

À faire

Écris le HTML de : un titre, un formulaire de recherche (un champ texte et un bouton), et une zone vide destinée à recevoir le résultat.

Questions à te poser

Ce sont elles qui font la différence entre du HTML et du bon HTML.

Comment tu sais que c'est bon

Ressources

2

Le style

45 min, timeboxé

Objectif : que ce soit propre et lisible. Pas beau. Propre.

Mets un minuteur à 45 minutes

C'est l'étape où l'on perd le plus facilement une demi-journée. Si tu n'as pas fini au bout de 45 minutes, tu passes à la suite quand même : tu reviendras peaufiner en fin de journée s'il te reste du temps.

À faire

Centre le contenu, donne-lui une largeur maximale, aère (marges, espacements), choisis une palette de trois ou quatre couleurs maximum, et prévois des styles pour les quatre états du résultat : accueil, chargement, erreur, succès.

Questions à te poser

Comment tu sais que c'est bon

Ressources

3

Comprendre l'API avant de coder

45 min

Objectif : savoir exactement quelles données tu vas recevoir, et où elles se trouvent. Zéro ligne de code à cette étape.

Il te faut deux appels successifs : l'API météo ne comprend pas les noms de ville, elle ne parle qu'en coordonnées GPS.

"Rodez" → [ API géocodage ] → latitude / longitude → [ API météo ] → température, vent, humidité…

À faire

  1. Sur la doc du géocodage, construis l'URL qui cherche la ville « Rodez », limitée à 1 résultat, en français. Colle-la dans ton navigateur.
  2. Sur la doc météo, la page génère une URL en bas quand tu coches des options. Coche les variables current : température à 2 m, code météo, vitesse du vent à 10 m, humidité relative. Récupère l'URL générée, remplace les coordonnées par celles de Rodez, colle-la dans ton navigateur.
  3. Regarde les deux JSON obtenus. Ils n'ont pas du tout la même forme : l'un renvoie un tableau de résultats, l'autre un objet unique.
  4. Écris noir sur blanc, dans ton journal, le chemin exact pour atteindre la latitude dans le premier JSON et la température dans le second. Quelque chose comme truc.machin[0].bidule.
  5. Cherche dans la doc météo le tableau « WMO Weather interpretation codes ». La météo n'est pas renvoyée en toutes lettres mais sous forme d'un nombre : tu devras traduire ces nombres en texte et en pictogramme.

Comment tu sais que c'est bon

Ressources

4

Ton premier appel réseau : le géocodage

1 h 15

Objectif : une fonction qui prend un nom de ville et renvoie ses coordonnées : testée dans la console avant d'être branchée à la page.

À faire

Écris une fonction dédiée qui :

Notions à aller chercher, dans cet ordre

Comment tu sais que c'est bon

Dans la console du navigateur, tu appelles ta fonction à la main :

Ressources

5

Deuxième appel : la météo

30 min

Objectif : une deuxième fonction, qui prend une latitude et une longitude et renvoie les conditions actuelles.

C'est le même exercice que l'étape 4, en plus court. Si tu y passes une heure, c'est que l'étape 4 n'était pas comprise : relis-la plutôt que d'avancer.

Question à te poser

Tes deux fonctions se ressemblent beaucoup. Y a-t-il quelque chose à mettre en commun ? Attention, parfois la réponse est non. Sache justifier ton choix, quel qu'il soit.

Comment tu sais que c'est bon

6

Brancher le formulaire

1 h

Objectif : que ça marche pour de vrai, depuis la page.

À faire

Écoute la validation du formulaire, et enchaîne : afficher le chargement → chercher la ville → si elle n'existe pas, afficher l'erreur et s'arrêter là → sinon chercher la météo → afficher le résultat. Et prévois le cas où tout part en vrille : réseau coupé, API en panne.

Points d'attention

Comment tu sais que c'est bon

Teste les quatre cas, dans cet ordre :

Ressources

7

Afficher le résultat

1 h

Objectif : la carte météo, avec le bon pictogramme.

À faire

  1. Construis ta table de correspondance entre les codes météo WMO et un couple « libellé en français + pictogramme ». Mets-en au moins une douzaine, en couvrant les cas courants : dégagé, nuageux, brouillard, pluie, neige, averses, orage.
  2. Génère le HTML de la carte et injecte-le dans ta zone de résultat.
  3. Prévois le cas où l'API renvoie un code que tu n'as pas dans ta table. Ça arrivera. L'application ne doit ni planter ni afficher « undefined ».

Questions à te poser

La question la plus importante de la journée

Tu insères dans ta page du texte qui vient d'un serveur externe. Que se passerait-il si le nom d'une ville contenait des balises HTML ? Cherche « XSS », et regarde la différence entre innerHTML et textContent. Ce réflexe-là, on l'attend de toi sur tous les projets : c'est probablement ce que tu retiendras de plus utile aujourd'hui.

Comment tu sais que c'est bon

Ressources

8

Relecture

30 min, ne la saute pas

Objectif : relire ton propre code comme si c'était celui de quelqu'un d'autre.

Le test final

Ouvre ton fichier JS et prends une ligne au hasard. Tu sais l'expliquer ? Recommence cinq fois. Toute ligne que tu n'expliques pas est une ligne à comprendre, ou à supprimer.

Comment tu sais que c'est bon

Bonus

Seulement si tout le reste est fini et relu. Du plus simple au plus ambitieux : un bonus bien fait et bien compris vaut mieux que trois bâclés.

1. °C / °F

Un bouton pour basculer d'unité. Piège : vaut-il mieux convertir toi-même ou refaire un appel réseau ? Regarde d'abord si l'API sait le faire toute seule.

2. Historique

Mémorise les cinq dernières villes cherchées et affiche-les en boutons de raccourci. Elles doivent survivre à un rechargement de la page.
localStorageMDN

3. Prévisions

Affiche aussi les trois prochains jours. La doc Open-Meteo a un bloc daily à côté du bloc current.

4. Géolocalisation

Propose la météo de la position actuelle de l'utilisateur. Attention : c'est une permission, elle peut être refusée : que se passe-t-il alors ?
Geolocation APIMDN

5. Accessibilité

Utilise ton application sans souris, uniquement au clavier, du début à la fin. Puis vérifie que le résultat d'une recherche est bien annoncé aux lecteurs d'écran (aria-live).

Tu bloques ? → Remplir le journal