Introduction
Vue Router est la bibliothèque officielle de routage pour Vue.js. En 2026, avec Vue 3 et la Composition API, il permet de construire des applications monopages performantes et maintenables. Ce tutoriel intermédiaire vous guide pas à pas pour configurer un routeur complet avec TypeScript, y compris les gardes de navigation, les routes dynamiques et le chargement paresseux des composants. Vous apprendrez à structurer un projet professionnel tout en évitant les pièges courants.
Prérequis
- Node.js 20+
- Connaissances intermédiaires de Vue 3 et TypeScript
- Vite ou Vue CLI installé
- Compréhension basique des composants .vue
Installation de Vue Router
npm install vue-router@4Cette commande installe Vue Router version 4 compatible avec Vue 3. Assurez-vous d'utiliser la version 4 pour bénéficier des dernières fonctionnalités de TypeScript et de la Composition API.
Création du fichier router
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
const routes: RouteRecordRaw[] = [
{
path: '/',
name: 'Home',
component: () => import('../views/Home.vue')
},
{
path: '/about',
name: 'About',
component: () => import('../views/About.vue')
}
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;Ce fichier définit les routes de base avec lazy-loading. createWebHistory() active le mode HTML5 History pour des URLs propres.
Intégration dans main.ts
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');L'utilisation de app.use(router) enregistre le routeur globalement. Cela rend $router et $route accessibles dans tous les composants.
Ajout de routes dynamiques
{
path: '/user/:id',
name: 'User',
component: () => import('../views/User.vue'),
props: true
}Les routes dynamiques capturent les paramètres d'URL. L'option props: true transmet automatiquement les paramètres comme props au composant.
Implémentation d'un garde global
router.beforeEach((to, from, next) => {
const isAuthenticated = true;
if (to.meta.requiresAuth && !isAuthenticated) {
next({ name: 'Home' });
} else {
next();
}
});Les gardes beforeEach permettent de contrôler l'accès aux routes. Utilisez meta.requiresAuth pour protéger des pages privées.
Bonnes pratiques
- Utilisez toujours le lazy-loading pour les routes
- Centralisez la configuration dans un seul fichier router/index.ts
- Définissez des meta tags pour les titres de page
- Testez les gardes de navigation avec des scénarios réels
- Préférez createWebHistory pour le SEO
Erreurs courantes à éviter
- Oublier d'appeler next() dans les gardes
- Utiliser des imports statiques au lieu du lazy-loading
- Ne pas typer les routes avec RouteRecordRaw
- Ignorer les erreurs de navigation avec router.onError
Pour aller plus loin
Approfondissez vos compétences avec nos formations complètes sur Vue.js et TypeScript. Découvrez nos formations Learni.