Cette section documente tous les composables réutilisables de l'application. Les composables sont des fonctions qui encapsulent la logique réutilisable en utilisant la Composition API de Vue.
flowchart TD
A[Composables] --> B[useAuth]
A --> C[useForm]
A --> D[useParameter]
A --> E[useTroubleshootingForm]
B --> F[Tokens JWT]
B --> G[Cookies]
C --> H[État formulaire]
C --> I[Navigation]
D --> J[API Parameters]
E --> K[Formulaire dépannage]
composables/
└── useFeatureName.ts
use obligatoireexport const useFeatureName = () => {
// État réactif
const state = useState('featureState', () => initialState);
// Fonctions
const doSomething = () => {
// Logique
};
// Retourner l'API publique
return {
state,
doSomething,
};
};
<script setup lang="ts">
// Import automatique dans Nuxt
const { getToken, isAuthenticated } = useAuth();
const { currentStep, nextStep } = useForm();
// Utilisation
if (isAuthenticated()) {
const token = getToken();
// ...
}
</script>
const data = useState('key', () => initialValue);
const cookie = useCookie('key', {
secure: true,
sameSite: 'strict',
maxAge: 60 * 60 * 24, // 24 heures
});
const data = await $fetch('/api/endpoint', {
headers: {
Authorization: `Bearer ${token}`,
},
});
const { data: cached } = useNuxtData('key');
const { data } = await useLazyFetch('/api/endpoint', {
key: 'key',
});
Chaque composable doit être testé. Exemple avec Vitest :
import { describe, it, expect } from 'vitest';
import { useFeatureName } from '@/composables/useFeatureName';
describe('useFeatureName', () => {
it('initialise correctement', () => {
const { state } = useFeatureName();
expect(state.value).toEqual(initialState);
});
});
vue : Framework principal@nuxtjs/composition-api : Composition API pour Nuxtzod : Validation de schémas (pour certains composables)