Composants
Composant de base

Hello {name}!

Structure d'un composant
<script>Logique du composant (JS/TS)
MarkupTemplate HTML avec {expressions}
<style>CSS limité (auto-délimité au composant)
<script context="module">Exécuté une fois par module, pas par instance
Réactivité
Affectations réactives
Déclarations réactives

$: marque les déclarations et instructions réactives

Règles de réactivité
Affectation déclenchecount += 1 déclenche la mise à jour ; obj.x = 1 aussi
Mutation de tableauUtiliser arr = [...arr, item] (réaffecter pour déclencher)
$: déclarationSe recalcule automatiquement quand les variables référencées changent
$: instructionExécute des effets de bord de façon réactive
Props
Déclarer et passer des props

{greeting}, {name}!

Diffusion de props
Événements
Événements DOM
value = e.target.value} />
Modificateurs d'événements
preventDefaultAppelle e.preventDefault()
stopPropagationArrête la propagation de l'événement
onceLe gestionnaire ne s'exécute qu'une seule fois
selfSeulement si event.target est l'élément
captureUtiliser la phase de capture
Événements de composants
Liaisons
Liaison bidirectionnelle
Liaisons d'élément et de composant
Types de liaisons
bind:valueValeur d'input/select/textarea
bind:checkedÉtat de la case à cocher
bind:groupGroupe de boutons radio/cases à cocher
bind:thisRéférence à l'élément DOM
bind:clientWidth/HeightDimensions de l'élément (lecture seule)
Stores
Store inscriptible
// store.js import { writable } from "svelte/store"; export const count = writable(0); // Component — auto-subscribe with $
Méthodes de store
count.set(10); // set value count.update(n => n + 1); // update from current const unsub = count.subscribe(v => console.log(v));
Types de stores
writable(val)Store en lecture-écriture
readable(val, fn)Lecture seule, défini par la fonction de démarrage
derived(stores, fn)Calculé à partir d'autres stores
$storeSyntaxe d'abonnement automatique dans les composants
Transitions
Transitions intégrées
{#if visible}
Fades in/out
Fly in, fade out
{/if}
Options de transition
fadeOpacité de 0 à 1
flyAnimer le décalage x/y + opacité
slideGlisser en entrée/sortie (hauteur)
scaleAgrandir et fondre
drawAnimation de tracé SVG
durationDurée de la transition en ms
delayDélai avant le démarrage
Slots
Slots par défaut et nommés
Default header Default content

Title

Body content goes here

Props de slot
{#each items as item} {/each}

{index}: {item.name}

Contexte
Définir et obtenir le contexte
Contexte vs Stores
ContexteLimité à l'arbre de composants, pas réactif par défaut
StoresGlobal, réactif, importable partout
Contexte + StorePasser un store via le contexte pour une réactivité délimitée
Bases de SvelteKit
Routage basé sur les fichiers
src/routes/ +page.svelte about/+page.svelte blog/[slug]/+page.svelte
Fonctions de chargement
// +page.js (runs on client & server) export async function load({ params, fetch }) { const res = await fetch(`/api/posts/${params.slug}`); return { post: await res.json() }; }
Fichiers clés
+page.svelteComposant de page
+page.js / +page.tsFonction de chargement client/universelle
+page.server.jsChargement côté serveur uniquement / actions de formulaire
+layout.svelteMise en page partagée
+error.sveltePage d'erreur
+server.jsPoint d'API (GET, POST, ...)