Lección 5 de 20 · Lectura y práctica
Quiz: Conceptos clave de SvelteKit
Tipo de lección: QuizConcepto clave: Arquitectura híbrida de SvelteKitSvelteKit es un framework full-stack que combina renderizado en el servidor (SSR) y en el cliente (CSR) de forma inteligente. Imagina un restaurante donde la.
Del concepto a la práctica
Taller de esta lección
Este repaso sirve para distinguir responsabilidades, no para memorizar nombres. Ante cada situación, decide si corresponde a una ruta, una carga de datos, una acción de servidor o estado local. La respuesta correcta debe justificar dónde se ejecuta la operación y quién necesita el resultado.
Ejemplo resuelto
Caso: “Mostrar las tres tareas del usuario al entrar”. Respuesta: una load function, porque es una lectura previa al renderizado. Caso: “Guardar una tarea enviada”. Respuesta: una Server Action, porque es una mutación que debe validarse en el servidor.
Pruébalo
Clasifica “cambiar el color de un botón” como estado local o carga remota.
Clasifica “comprobar una sesión” como responsabilidad de servidor o de interfaz.
Clasifica “obtener el título de /tarea/abc” según su ruta y parámetro.
Escribe una razón de una frase para cada decisión.
Comprueba tu resultado
Error frecuente: elegir un store para cualquier dato; corrígelo reservándolo para estado de interfaz compartido dentro del árbol del usuario, sin guardar datos de solicitudes en un singleton del servidor.
Ejercicio: revisa tus tres clasificaciones y sus justificaciones y añade el lugar de ejecución. Resultado esperado: color queda local, sesión queda en servidor, título usa una ruta dinámica y ninguna mutación depende solo del navegador.

Mapa de prácticaEl servidor puede obtener datos y producir el HTML inicial. El navegador muestra el resultado y ejecuta las interacciones que necesitan estado local. Mantén las claves sensibles en el servidor y define qué parte se ejecuta en cada entorno.
Ver la infografía en tamaño completo ↗Tipo de lección: Quiz
Concepto clave: Arquitectura híbrida de SvelteKit
SvelteKit es un framework full-stack que combina renderizado en el servidor (SSR) y en el cliente (CSR) de forma inteligente. Imagina un restaurante donde la cocina (servidor) prepara los platos base, y los meseros (cliente) los personalizan al gusto del cliente. Esta arquitectura híbrida permite que las páginas se carguen rápidamente desde el servidor, pero luego se vuelvan interactivas en el navegador.
La clave está en el enrutamiento basado en archivos: cada archivo +page.svelte representa una ruta, y puedes acompañarlo con +page.server.js para lógica del servidor o +page.js para lógica compartida. Esto crea una separación natural entre lo que ocurre en el servidor (seguro, rápido) y en el cliente (interactivo).
Cómo funciona en la práctica
Cuando un usuario visita tu aplicación SvelteKit, el servidor procesa la solicitud, ejecuta cualquier load function en el servidor, y envía HTML renderizado. Luego, el cliente hidrata la página, convirtiendo ese HTML estático en componentes Svelte interactivos.
Paso a paso: 1) El navegador solicita /productos. 2) SvelteKit busca src/routes/productos/+page.svelte. 3) Si existe +page.server.js, ejecuta su función load para obtener datos. 4) Renderiza el componente con esos datos. 5) Envía HTML completo al navegador. 6) El cliente carga el JavaScript y hace la página interactiva.
Código en acción
Antes: Solo cliente, lenta primera carga:
// En un SPA tradicional, todo se carga en el cliente
// src/routes/productos/+page.svelte
<script>
let productos = [];
onMount(async () => {
const res = await fetch('/api/productos');
productos = await res.json();
});
</script>
<ul>
{#each productos as producto}
<li>{producto.nombre}</li>
{/each}
</ul>Después: Con SvelteKit, renderizado en servidor para mejor performance:
// src/routes/productos/+page.server.js
export async function load({ fetch }) {
const res = await fetch('https://api.mitienda.com/productos');
const productos = await res.json();
return { productos };
}
// src/routes/productos/+page.svelte
<script>
export let data;
let productos = data.productos;
</script>
<ul>
{#each productos as producto}
<li>{producto.nombre}</li>
{/each}
</ul>Errores comunes
- Mezclar lógica de servidor y cliente: Usar
windowodocumenten+page.server.js. Solución: Mover esa lógica aonMounten el componente. - No optimizar la hidratación: Cargar demasiado JavaScript innecesario. Usa
<svelte:head>para recursos críticos y consideraexport const ssr = falsepara páginas muy interactivas. - Ignorar el manejo de errores: No implementar
+error.sveltepara rutas. Crea un archivo de error en cada carpeta de rutas para fallos específicos. - Mal uso de fetch en load functions: No pasar el
fetchnativo en funciones load del servidor. En+page.server.js
Checklist de dominio
- Entiendo la diferencia entre
+page.server.jsy+page.js. - Puedo explicar qué es la hidratación y por qué mejora el SEO.
- He creado al menos una ruta con datos cargados desde el servidor.
- Sé cómo manejar errores con archivos
+error.svelte. - Puedo optimizar una página desactivando SSR cuando es necesario.
- He usado
<svelte:head>para gestionar metadatos. - Comprendo cómo SvelteKit decide renderizar en servidor o cliente.
Configura una página de productos con Server Actions
En este ejercicio, crearás una página de productos que use Server Actions para manejar un formulario de búsqueda. Sigue estos pasos:
- Crea una nueva ruta en
src/routes/productos/+page.sveltecon un formulario de búsqueda simple. - Implementa un archivo
src/routes/productos/+page.server.jscon una funciónloadque cargue una lista inicial de productos desde una API simulada. - Añade una Server Action en el mismo
+page.server.jspara manejar la búsqueda. Usaactionsexport. - Conecta el formulario a la Server Action usando el atributo
method="POST"y maneja la respuesta para mostrar resultados filtrados. - Agrega un archivo
+error.svelteen la carpeta productos para manejar fallos en la carga de datos.
Objetivo: Que la página cargue productos desde el servidor y permita búsquedas sin recargar completamente.
Pistas
- Usa
export let formen el componente para acceder a los datos del formulario después de una acción. - En la Server Action, valida los datos de entrada y devuelve un objeto con los productos filtrados.
- Considera usar
enhancede SvelteKit para mejorar la experiencia del formulario sin JavaScript completo.
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Sigue con SvelteKit Full-Stack: Construye Aplicaciones Web Performantes con Server Actions
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.