Séance 4 : Router et navigation

🎯 Objectifs

  • Maîtriser navigation avancée avec Vue Router.

  • Gérer routes dynamiques et sécurisées.

📖 Partie théorique

Routes dynamiques et imbriquées

Paramètres de route

Les routes dynamiques capturent des valeurs variables dans l'URL (:id, :slug).

// Configuration des routes
const routes = [
  { path: '/task/:id', component: TaskDetail, props: true },
  { path: '/user/:userId/task/:taskId', component: TaskDetail },
  { path: '/profile/:userId?', component: UserProfile }, // Optionnel
]

Accès aux paramètres :

// Dans le composant
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
const taskId = route.params.id
</script>

Routes imbriquées

Organisation hiérarchique avec composants parent/enfant.

Navigation programmatique :

Gestion des erreurs

Pages d'erreur et redirections pour une meilleure expérience utilisateur.

Page 404 personnalisée

Configuration des routes d'erreur

Gestion des erreurs de navigation

Routes et meta

Il est possible d'ajouter des métadonnées aux routes pour diverses utilisations (authentification, titres, etc.).

Usage dans les composants :

Le meta peut aussi être utilisé pour des guards ou pour changer le titre de la page dynamiquement.

Guards

  • Fonctions de contrôle d’accès (beforeEach, meta).

  • Protection des routes sensibles (authentification).

Concepts clés :

  • Global Guards : s’appliquent à toutes les navigations.

  • Per-Route Guards : spécifiques à certaines routes.

  • In-Component Guards : définis dans les composants.

Guard global :

Guard par route :

Guard dans composant :

Mise à jour du title de la page

Lazy loading (Chargement différé)

Chargement des composants uniquement quand nécessaire pour optimiser les performances.

Import dynamique

Composant de chargement

📝 Travaux pratiques

  • Ajouter route /task/:id.

  • Mettre en place un guard d’accès (auth simulée).

  • Créer une page 404 personnalisée.

Last updated