Séance 7 : Routes
Dernière mise à jour
Dernière mise à jour
Dans une application web classique, on utilise des URL pour changer le comportement de notre application, et le contenu des pages. Ce mécanisme fonctionne en envoyant une requête au serveur, qui nous retourne une page HTML.
Ce mécanisme est intéressant, mais ne permet pas d'avoir des applications dites "SPA" Single Page Application, c'est à dire des applications dont on à l'impression que l'intégralité de la page n'est jamais rechargeée, mais seulement une partie.
Dans une application monopage (SPA), le JavaScript côté client doit intercepter la navigation, récupérer dynamiquement de nouvelles données, et mettre à jour la page actuelle sans la recharger entièrement. Il en résulte généralement une expérience utilisateur plus rapide, en particulier pour les cas d'utilisation qui ressemblent davantage à des "applications" réelles, où l'utilisateur est censé effectuer de nombreuses interactions sur une longue période de temps.
Dans ces SPA, le "routage" est donc effectué côté client, dans le navigateur.
Vue.js propose un système de routage nommé , officiellement supporté, qui permet de créer des applications SPA. La documentation officielle se trouve ici : . Tout comme dans les frmameworks back, le système de route est très puissant et permet une contrôle précis de vos URL et des actions associés.
Tout d'abord, dans notre projet, nous devons installer les routes. Normalement c'est déjà fait, puisque vous avez du le choisir lors de l'installation du projet, dans le cas contraire, il faut l'installer avec la commande suivante :
Si on souhaite ajouter des liens dans notre application, et définir une partie de notre page qui sera remplacée selon l'URL, on doit utiliser la balise <router-link>
(pour les liens) et <router-view>
(pour la partie de la page qui sera remplacée). Si on utilisait une balise <a>
classique, le comportement par défaut du navigateur serait de recharger la page, ce qui n'est pas ce qu'on veut.
Dans le code ci-dessus, on a ajouté deux liens, qui pointent vers les URL /
et /about
. On a également ajouté une balise <router-view>
, qui sera remplacée par le contenu de la page correspondant à l'URL.
Pour que cela fonctionne, il faut ajouter le code suivant dans le fichier src/main.js
(attention certaines parties sont déjà présentes) :
On peut accéder aux paramètres de la route, ou à l'objet router depuis n'importe quel composant, en utilisant les fonctions useRouter
et useRoute
:
Par exemple :
Pour des raisons pratiques et pour éviter de manipuler des URL dans le code, on peut définir des routes nommées.
On peut ensuite utiliser ces routes nommées dans le code :
Cette syntaxe est plus "pratique" pour passer des paramètres. Par ailleurs, dans cette syntaxe les paramètres sont "échapés" pour éviter les caractères interdits.
On peut imbriquer des routes, et ainsi définir des routes "enfant" qui seront affichées dans une route "parent".
Dans cet exemple profile et posts s'afficheront dans la balise <router-view>
de la vue associée au composant User.
Ajoutez un lien et une page permettant d'afficher les détails d'un pays
Ajoutez un menu affichant les 6 continents (Region) et les pays associés
Structurez vos page avec des composants (header, nav, footer, etc...)
Pour chaque fiche pays ajoutez des "onglets" permettant d'organiser l'ensemble des informations du pays (l'organisation est à votre convenance). La page doit contenir au moins 3 "onglets"
Ajoutez une page d'accueil avec la barre de recherche. Les résultats s'afficheront dans une popup... Une popup est une fenetre qui est visible ou non, avec un overlay...
Mettez en place un peu de CSS