Grégory Bourguin
SysReIC - LISIC - ULCO
Vues.js - Les Composants

Components

Props

Notions Requises

Props

Énoncé

Créez le composant BasicCard.vue et intégrez-le à ex18_prop01_static.vue sachant que :

  • BasicCard.vue est paramétré par name de type String.
  • Dans l'exemple ex18_prop01_static, on lui a envoyé la constante 'Goon'.
ex18_prop01_static.vue
  • Dans l'exemple ex18_prop02_default, on ne lui a rien envoyé.
ex18_prop02_default.vue
  • Dans l'exemple ex18_prop03_dyn, on lui envoie la valeur entrée dans l'input.
  • NB : l'input se trouve dans ex18_prop03_dyn, pas dans BasicCard.
ex18_prop03_dyn.vue

One Way

Notions Requises

One-Way Data Flow

Énoncé

L'exercice ex19_one_way est le parent d'un composant fils nommé OneWayTest.

Le parent envoie globalName en paramètre du fils (props name).

Dans l'exemple, globalName et name sont mises dans des input.

Rappel : un composant n'est pas censé modifier la valeur des props qu'il reçoit.
(donc ici name ne devrait pas être dans un input)

On peut constater que si une modification de globalName a bien un effet sur name, la modification de name n'a quant à elle aucun effet sur globalName.

ex19_one_way.vue

v-for

Énoncé

Le but de ex20_for_comp.vue est de démontrer qu'il est possible d'instancier plusieurs fois un composant.

Dans cet exercice, on crée un composant Country paramétré par country.

Plusieurs instances de Country sont créées dynamiquement en parcourant le tableau fourni par sample_countries.js.

ex20_for_comp.vue

Events

Notions Requises

Component Events

Énoncé

L'exemple ex21_comp_event utilise le mécanisme d'évènements de composants de vue.

Cet exemple met en oeuvre le (sous-)composant TextInput tel que :

  • TextInput demande à l'utilisateur d'entrer une chaine avec une longueur minimale définie par un paramètre min (type Number, valeur par défaut = 10, valeur envoyée ici = 5).
  • Le bouton Clear permet de vider l'input.
  • Tant que la chaine n'a pas la longueur min, l'input est "rouge", et la chaine ne peut pas être validée.
  • Quand la longueur min est atteinte, l'input change de couleur et permet la validation par un appui sur la touche ENTREE. Cette action a pour effet d'envoyer un évènement au parent ex21_comp_event qui met alors à jour son affichage du texte validé.
ex21_comp_event.vue

TP02

Énoncé

Réalisez la page ci-dessous.

Quelques remarques à prendre en compte :

  • Cette page ressemble au TP 01, MAIS elle DOIT cette fois être créée sous forme d'une application tp02_v1.vue qui intègre les 2 composants UserCard.vue ET UserForm.vue !
  • Représentez l'utilisateur en utilisant la classe User définie dans User.js
  • Les boutons ne font pas partie des composants UserForm.vue ou UserCard.vue.
  • Testez bien tout pour voir ce qu'il faut faire !
tp02_v1.vue

Version 2

On va maintenant encapsuler ce qui a été fait en ce début de TP 02 dans un "gros" composant qui possèdera de plus une entête fournie par un nouveau composant nommé Menu.vue.

Quelques remarques à prendre en compte :

  • Vous remarquerez que Menu affiche le nick de l'utilisateur. Cependant, faites bien attention au fait que cette information n'est mise à jour que lorsqu'on l'a modifiée ET enregistrée en cliquant sur le bouton éponyme !
  • Cette version continue d'utiliser UserCard et UserForm.
  • Le bouton "Effacer" a été remplacé par "Reset" : vous noterez que son effet a changé aussi -> il réinitialise l'utilisateur avec les valeurs correspondant au dernier enregistrement !
tp02_v2.vue

Slots

Notions Requises

Slots

Énoncé

L'exercice ex22_comp_slots.vue à re-créer utilise le composant PostIt qui :

  • est paramétré par une props bg qui fournit la couleur d'arrière plan du post-it
  • possède 2 slots : le slot par défaut et un slot title permetant d'envoyer le contenu d'un titre pour le post-it (dans l'exemple, le post-it jaune a le titre Courses)
ex22_comp_slots>
ex22_comp_slots.vue

TP 03

Le but de ce TP est de créer une page qui utilise 2 composants spécifiques :

  • Un composant nommé Spoiler qui, comme son nom l'indique, permet d'intégrer dans la page des composants qui affichent un bouton spoiler à la place d'un texte spécifique, ce texte n'étant visible qu'une fois qu'on a cliqué sur le bouton correspondant.
  • Un composant nommé NavItem qui génère une ancre autour d'un texte : le texte affiché est le contenu de la balise du composant (lors de son insertion) et le lien correspond au paramètre du composant nommé href.

Pour réaliser cette application, vous sont fournis :

  • Un fichier nommé template.html qui contient le template de l'application :
    CE FICHIER NE DOIT PAS ÊTRE MODIFIÉ !
  • Les images utilisées pour les fonds des entête, contenu et pied de page.

Ces fichiers sont contenus dans l'archive tp03_ressources.zip.

Quelques remarques à prendre en compte :

  • Le fichier template.html NE DOIT PAS ÊTRE MODIFIÉ ! (oui... j'insiste...)
    Il vous faut donc vous baser sur son contenu pour créer l'application.
  • Vous devez créer du CSS pour que tout s'affiche comme dans la démo ci-dessous.
  • Les balises spoiler sont déjà présentes dans le template.
  • Vous aurez remarqué que la liste des nav-item composant la navbar est générée dynamiquement à partir d'une variable titles.
    Cette variable DOIT elle-même être construite dynamiquement à partir des id et h1 contenus dans les articles du template de l'application.
    (pas de texte & id "en dur" dans le script de l'application SVP).
Résultat attendu.
--> Attention à la mise en forme <--

NB: Ce TP est une version Vue du TP Javascript donné ici.

TP04 (Router)

Notions Requises

Routing

Énoncé

Ouvrez le TP04 dans une nouvelle fenêtre pour bien voir la barre d'adresse.

Reproduisez le site en utilisant Vue Router et en faisant attention à ce que les affichages correspondent au chemin dans l'adresse affichée.

Vous aurez à nouveau besoin de sample_countries.js.

TP04.vue