Vue: Mini-catalogue Jeux retro¶
Fichiers de départ¶
📥 Télécharger fichiers de départ
Aperçu¶
Un mini-catalogue de jeux rétro¶
- Une liste d'items rendue par une composante de carte reutilisable (
ItemCard) - Un panneau d'options (tri, ordre, limite, disposition grid/list) géré par le parent (
App.vue) - Bonus: séparer ce panneau d'options (tri, ordre, limite, disposition grid/list) et en faire une composante à part
- SFC partout (
.vue) avec stylesscoped
Lancer le projet¶
- Installer les dépendances npm
- Démarrer le serveur de développement Vite
npm install
npm run dev
Vite + Vue 3
Étapes (1–4)¶
1) Préparer les données (dans App.vue)¶
- Observez le tableau
itemsfourni (id, title, price, year, image, tags). - Ajoutez un jeux rétro dans la liste (n'oubliez pas d'ajouter l'image trouvé sur Internet).
- Notez les états d'interface (
sortBy,sortDir,limit,layout). - Sous le commentaire
<!-- Affichage de la liste des jeux -->ajoutez l'affichage de la composanteItemList.
2) Analysez la propriété calculée itemsFiltered¶
- Analysez la logique de tri (par
title,priceouyear), d'ordre (asc/desc) et de limite danscomputed: itemsFiltered.
3) Mettre en place la liste (dans ItemList.vue)¶
- Préparer la composante à recevoir les props
itemsetlayouten spécifiant le type de donnée. À titre d'information:itemscontiendra la liste des jeux sous forme de tableau (Array).layoutcontiendra le format de la mise en page des carte, soit "grid" ou "list". Cettepropsera donc une chaîne de caractères (String).
- Retournez dans
App.vuepour envoyer les données dans les 2propsque vous venez de créer. La propitemsdevra recevoir les données filtrées provenant de la propriété calculéeitemsFiltered. - De retour dans
ItemList.vue, sous<!-- Affichage des cartes de chaque jeu -->, affichez la liste de jeuxItemCardavecv-for(clé:key="item.id") En savoir plus sur l'utilisation dekeyavec un v-for - Adaptez la disposition (
grid/list) en ajoutant une classe dynamique sur conteneur<section class="collection">en fonction de la valeur de la proplayout.
4) Construire la carte (dans ItemCard.vue)¶
- Déclarez les props (
title,price,image,tags,year) en spécifiant le type de donnée. - Dans le
<template>affichez l'image, le titre, l'année, les tags et le prix formaté par la méthodeformatPricedéjà existante.
BONUS: Panneau d'options (dans OptionsBar.vue)¶
- Pour le moment, le panneau d'options (
sortBy,sortDir,limit,layout) se trouve directement dans l'App principaleApp.vue. Sortez ça de la et faites-en une composante dans OptionsBar.vue. Observez les 2 autres composantes pour savoir comment le préparer et l'intégrer à l'app principale. - Montez les base de la composante, monter le
<template>. - Recevez les props
sortBy,sortDir,limit,layoutet affichez-les. - Utilisez
$emitpour envoyer les données à l'app parent lorsque la valeur de l'événement de formulaire change.
Rappels¶
- Props : flux parent -> enfant, read-only côté enfant.
- Emit : flux enfant -> parent.
- SFC : structure
<template> <script> <style scoped>.