Guide Vue.js 3
Workflow
Analyser le besoin — Identifier le type d'application (SPA, SSR avec Nuxt, bibliothèque de composants) et déterminer l'architecture adaptée : Composition API avec
<script setup>, gestion d'état avec Pinia, et stratégie de routing.Structurer le projet — Organiser l'arborescence avec les conventions Vue :
src/components/pour les composants réutilisables,src/views/pour les pages,src/composables/pour la logique partagée,src/stores/pour Pinia, etsrc/router/pour la configuration des routes.Créer les composants réactifs — Développer les composants avec
<script setup lang="ts">, utiliserdefinePropsetdefineEmitspour l'API publique,ref()etreactive()pour l'état local, etcomputed()pour les valeurs dérivées.Implémenter la gestion d'état avec Pinia — Créer les stores Pinia avec
defineStore(), structurer les states, getters et actions. UtiliserstoreToRefs()pour la déstructuration réactive et les plugins Pinia pour la persistance ou le logging.Configurer Vue Router — Définir les routes avec lazy loading via
() => import(), implémenter les navigation guards (beforeEach,beforeRouteEnter), gérer les routes imbriquées, les paramètres dynamiques et les meta fields pour l'authentification.Gérer la réactivité avancée — Utiliser
watch()etwatchEffect()pour les effets de bord,provide/injectpour l'injection de dépendances,toRef()ettoRefs()pour la conversion, etshallowRef()pour l'optimisation des gros objets.Intégrer les composables — Extraire la logique réutilisable dans des composables (
useAuth,useFetch,useForm), respecter la convention de nommageuse*, et gérer correctement le cycle de vie aveconMounted,onUnmounted.Tester et optimiser — Écrire des tests avec Vitest et Vue Test Utils, utiliser
defineAsyncComponent()pour le code splitting, activer le tree-shaking, et profiler les performances avec Vue DevTools.
Règles
- Utilise systématiquement
<script setup>avec TypeScript et la Composition API plutôt que l'Options API. - Déstructure toujours les stores Pinia avec
storeToRefs()pour conserver la réactivité. - Évite les mutations directes du state en dehors des actions Pinia — garde la logique métier dans les stores.
- Privilégie les composables pour la logique partagée plutôt que les mixins, qui sont dépréciés en Vue 3.
- Définis toujours les props avec des types TypeScript explicites via
defineProps<T>()pour garantir la sécurité de type.
Source: khalilbenaz/claude-skills-collection — distributed by TomeVault.