Componentes
Componente Básico

Hello {name}!

Estructura del Componente
<script>Lógica del componente (JS/TS)
MarkupPlantilla HTML con {expresiones}
<style>CSS con ámbito (auto-delimitado al componente)
<script context="module">Se ejecuta una vez por módulo, no por instancia
Reactividad
Asignaciones Reactivas
Declaraciones Reactivas

$: marca declaraciones e instrucciones reactivas

Reglas de Reactividad
La asignación disparacount += 1 dispara actualización; obj.x = 1 también
Mutación de arraysUsar arr = [...arr, item] (reasignar para disparar)
Declaración $:Se recalcula automáticamente cuando cambian las variables referenciadas
Instrucción $:Ejecuta efectos secundarios de forma reactiva
Props
Declarar y Pasar Props

{greeting}, {name}!

Props Expandidas
Eventos
Eventos del DOM
value = e.target.value} />
Modificadores de Eventos
preventDefaultLlama a e.preventDefault()
stopPropagationDetiene la propagación del evento
onceEl manejador se dispara solo una vez
selfSolo si event.target es el elemento
captureUsar fase de captura
Eventos de Componente
Bindings
Enlace Bidireccional
Bindings de Elementos y Componentes
Tipos de Binding
bind:valueValor de input/select/textarea
bind:checkedEstado del checkbox
bind:groupGrupo de radio/checkbox
bind:thisReferencia al elemento DOM
bind:clientWidth/HeightDimensiones del elemento (solo lectura)
Stores
Store Escribible
// store.js import { writable } from "svelte/store"; export const count = writable(0); // Componente — suscripción automática con $
Métodos del Store
count.set(10); // establecer valor count.update(n => n + 1); // actualizar desde el valor actual const unsub = count.subscribe(v => console.log(v));
Tipos de Store
writable(val)Store de lectura-escritura
readable(val, fn)Solo lectura, establecido por función de inicio
derived(stores, fn)Calculado a partir de otros stores
$storeSintaxis de suscripción automática en componentes
Transiciones
Transiciones Incorporadas
{#if visible}
Aparece/desaparece
Vuela al entrar, desaparece al salir
{/if}
Opciones de Transición
fadeOpacidad de 0 a 1
flyAnima desplazamiento x/y + opacidad
slideDesliza entrada/salida (altura)
scaleEscalar y desvanecer
drawAnimación de trazo de ruta SVG
durationTiempo de transición en ms
delayRetraso antes de iniciar
Slots
Slots por Defecto y con Nombre
Cabecera por defecto Contenido por defecto

Título

El contenido del cuerpo va aquí

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

{index}: {item.name}

Contexto
Establecer y Obtener Contexto
Contexto vs Stores
ContextoCon ámbito de árbol de componentes, no reactivo por defecto
StoresGlobal, reactivo, importable desde cualquier lugar
Contexto + StorePasar un store vía contexto para reactividad con ámbito
Conceptos Básicos de SvelteKit
Enrutamiento Basado en Archivos
src/routes/ +page.svelte about/+page.svelte blog/[slug]/+page.svelte
Funciones de Carga
// +page.js (se ejecuta en cliente y servidor) export async function load({ params, fetch }) { const res = await fetch(`/api/posts/${params.slug}`); return { post: await res.json() }; }
Archivos Clave
+page.svelteComponente de página
+page.js / +page.tsFunción de carga universal/cliente
+page.server.jsCarga solo en servidor / acciones de formulario
+layout.svelteEnvoltorio de diseño compartido
+error.sveltePágina de error
+server.jsEndpoint de API (GET, POST, ...)