Front
Svelte
Faire un front avec Svelte + SvelteKit
Svelte est un framework JavaScript moderne qui compile les composants en code natif très performant. SvelteKit est le méta-framework officiel pour créer des applications web complètes (SSR, SSG, SPA) avec Svelte.
Création d’un projet SvelteKit
Installez le CLI si besoin :
npm create svelte@latest mon-projet-svelte
cd mon-projet-svelte
npm install
npm run dev
Structure d’un projet SvelteKit
src/routes/
: pages et endpoints (chaque fichier.svelte
devient une route)src/lib/
: composants réutilisablessrc/app.html
: template HTML principalstatic/
: fichiers statiques (images, favicon, etc)
Exemple de composant Svelte
<script lang="ts">
export let name: string = "World";
</script>
<h1>Hello {name}!</h1>
Utilisation :
<!-- src/routes/+page.svelte -->
<script>
import Hello from '$lib/Hello.svelte';
</script>
<Hello name="Arthur" />
Routing et navigation
Chaque fichier .svelte
dans src/routes/
correspond à une route. Exemple :
- src/routes/+page.svelte
→ /
- src/routes/about/+page.svelte
→ /about
Pour naviguer :
<a href="/about">À propos</a>
Stores (état global)
Svelte propose des stores pour partager l’état entre composants :
// src/lib/store.ts
import { writable } from 'svelte/store';
export const count = writable(0);
Utilisation :
<script lang="ts">
import { count } from '$lib/store';
</script>
<button on:click={() => $count++}>{$count}</button>
Appels API et chargement de données
Utilisez les fonctions load
de SvelteKit pour charger des données côté serveur ou client :
// src/routes/posts/+page.ts
export async function load() {
const res = await fetch('https://jsonplaceholder.typicode.com/posts');
const posts = await res.json();
return { posts };
}
Dans le composant :
<script lang="ts">
export let data;
</script>
{#each data.posts as post}
<div>{post.title}</div>
{/each}
Formulaires et actions
SvelteKit facilite la gestion des formulaires avec les actions :
<form method="POST">
<input name="email" type="email" />
<button type="submit">Envoyer</button>
</form>
Dans +page.server.ts
:
export const actions = {
default: async ({ request }) => {
const data = await request.formData();
const email = data.get('email');
// Traitement...
return { success: true };
}
};
Bonnes pratiques
- Utilisez TypeScript pour le typage des props et des stores.
- Structurez votre projet avec
/lib
pour les composants et stores partagés. - Privilégiez les endpoints SvelteKit pour la logique serveur/API.
- Utilisez les hooks (
onMount
,beforeUpdate
, etc) pour gérer le cycle de vie. - Testez vos composants avec Playwright ou Vitest.