Étape 21 — Récapitulatif séquences 6-7 et transposition
Ces concepts sont avancés
Les formulaires, l'authentification et la suppression sont présentés pour compléter la culture technique et préparer l'oral. Ils ne sont pas requis dans le projet personnel.
Ce que vous avez vu en démo
Séquence 6 — Formulaires et validation
| Concept | Ce qu'il faut retenir |
|---|---|
v-form + @submit.prevent | Empêche le rechargement de la page, permet la validation |
:rules | Tableau de fonctions qui valident un champ (retourne true ou un message d'erreur) |
formRef.validate() | Vérifie toutes les règles avant soumission |
v-text-field, v-textarea, v-select | Composants Vuetify pour les formulaires |
v-snackbar | Message de confirmation temporaire |
axios.post | Envoi de données au serveur (création) |
| Validation client vs serveur | La validation côté client améliore l'UX, mais le serveur doit toujours re-vérifier |
Séquence 7 — Authentification et suppression
| Concept | Ce qu'il faut retenir |
|---|---|
| Store d'authentification | Gère user, token, isAuthenticated |
localStorage | Persiste le token entre les rechargements de page |
router.beforeEach | Guard de navigation — vérifie les droits avant chaque changement de route |
v-if="authStore.isAuthenticated" | Affichage conditionnel selon l'état de connexion |
v-dialog | Boîte de dialogue modale pour confirmer les actions destructives |
axios.delete | Suppression de données sur le serveur |
Transposition au projet personnel
Ces fonctionnalités ne sont pas requises dans votre projet individuel. Cependant, si vous souhaitez les implémenter pour enrichir votre projet :
- Formulaire d'ajout : adaptez les champs à votre thème (recettes, films, jeux, etc.)
- Validation : définissez des règles pertinentes pour vos données
- Authentification : vous pouvez reprendre le même mécanisme factice
- Suppression : ajoutez un dialogue de confirmation pour toute action destructive
Questions pour l'oral
Ces questions couvrent les concepts des séquences 6 et 7. Préparez-vous à y répondre.
Formulaires et validation
Quel est le rôle de
@submit.preventsur un formulaire ?- Empêcher le rechargement de la page lors de la soumission et exécuter une fonction JavaScript à la place.
Comment fonctionne la validation avec
:rulesdans Vuetify ?- On passe un tableau de fonctions. Chaque fonction reçoit la valeur du champ et retourne
truesi la valeur est valide, ou un message d'erreur (string) sinon.
- On passe un tableau de fonctions. Chaque fonction reçoit la valeur du champ et retourne
Pourquoi la validation côté client ne suffit-elle pas ?
- Un utilisateur peut contourner la validation côté client (DevTools, requête API directe). Le serveur doit toujours re-vérifier les données pour garantir l'intégrité.
Quel est le rôle du
v-snackbar?- Afficher un message temporaire de confirmation ou d'erreur, sans bloquer l'interface.
Quelle différence entre
axios.getetaxios.post?GETrécupère des données depuis le serveur.POSTenvoie des données au serveur pour créer une nouvelle ressource.
Authentification et guards
Qu'est-ce qu'un guard de navigation dans Vue Router ?
- Une fonction qui s'exécute avant chaque changement de route. Elle peut autoriser la navigation, la bloquer ou rediriger vers une autre page.
À quoi sert
router.beforeEach?- À définir un guard global qui s'exécute avant chaque navigation. On l'utilise pour vérifier l'authentification et protéger certaines routes.
Comment le token est-il persisté entre les rechargements de page ?
- On le stocke dans
localStorage. Au chargement de l'application, on vérifie s'il existe et on restaure la session.
- On le stocke dans
Pourquoi utiliser
v-ifplutôt quev-showpour masquer le bouton « Supprimer » ?v-ifretire complètement l'élément du DOM (plus sécurisé, l'élément n'existe pas).v-showle cache visuellement avecdisplay: nonemais il reste dans le DOM.
Pourquoi demander confirmation avant une suppression ?
- Une suppression est irréversible. Le dialogue de confirmation protège contre les clics accidentels et donne à l'utilisateur une dernière chance d'annuler.