Quickstarters
¿Cómo construir un frontend de Svelte y conectarlo a un backend?
34 min
en este tutorial, construirás una aplicación de lista de tareas utilizando svelte y la conectarás a un servicio backend gestionado impulsado por back4app esta guía está diseñada para ti si deseas dominar las operaciones crud esenciales (crear, leer, actualizar, eliminar) y crear una interfaz intuitiva utilizando svelte al final, tu aplicación interactuará sin problemas con un backend que maneja el almacenamiento de datos, la autenticación y más desarrollar una aplicación de pila completa puede ser complejo debido a la configuración del backend y la gestión de bases de datos para simplificar tu trabajo, utilizamos back4app—un robusto backend como servicio —para que puedas centrarte en construir un frontend dinámico en svelte back4app proporciona una base de datos nosql completamente gestionada, autenticación, cloud code para lógica personalizada y sdks para una integración fluida esto te permite desplegar aplicaciones escalables sin gestionar la infraestructura del servidor conclusiones clave siguiendo este tutorial, tú inicializa un proyecto moderno de svelte con vite integra sin problemas un servicio backend para gestionar los datos de tu aplicación implementa operaciones crud esenciales para una lista de tareas dinámica despliega tu aplicación completamente funcional utilizando flujos de trabajo en contenedores en back4app requisitos previos antes de comenzar, asegúrate de tener node js y npm instalados en tu máquina verifica con node v y npm v conocimientos básicos de svelte , incluyendo componentes, variables reactivas y manejo de eventos una cuenta de back4app para gestionar tus servicios de backend regístrate en back4app https //www back4app com/ si aún no tienes una con estos requisitos previos en su lugar, estás listo para comenzar a construir tu proyecto configuración del proyecto comienza configurando tu entorno de desarrollo local e inicializando un nuevo proyecto svelte usando vite asegúrate de tener node js (versión lts) instalado si no, descárgalo de nodejs org https //nodejs org/ crea tu proyecto svelte ejecutando npm create vite\@latest todo app template svelte cambia a tu directorio de proyecto cd todo app instala las dependencias necesarias npm install inicia el servidor de desarrollo para verificar la configuración npm run dev abre la url proporcionada en tu navegador para ver tu aplicación svelte en acción con el frontend listo, procede a crear tu backend en back4app creando el backend de todo back4app ofrece un servicio de backend completamente gestionado impulsado por parse incluye una base de datos nosql, autenticación, cloud code y apis generadas automáticamente sigue estos pasos para configurar tu backend inicia sesión en tu panel de back4app https //www back4app com/ y haz clic en "crear una nueva aplicación " nombra tu aplicación (por ejemplo, todoapp ) y selecciona nodejs/parse como el tipo de backend navega a "base de datos" > "navegador" , haz clic en "crear una clase" , y elige "personalizado" nombra la clase tarea y establece permisos para permitir lectura y escritura pública (puedes refinar esto más tarde) en la tarea clase, agrega los siguientes campos título (string) – el título de la tarea descripción (string) – detalles sobre la tarea completado (boolean) – estado de finalización de la tarea fechadevencimiento (fecha) – la fecha límite para la tarea haz clic en "guardar" para crear el esquema integrando back4app con svelte para conectar tu aplicación svelte con back4app, usarás el parse javascript sdk instala el sdk de parse npm install parse configura el sdk editando el src/main js archivo importa el sdk e inicialízalo con tu id de aplicación y clave de javascript desde el panel de control de back4app (encuéntralos en configuración de la app > seguridad y claves ) import app from ' /app svelte'; import parse from 'parse/dist/parse min js'; const parse app id = 'your application id'; const parse js key = 'your javascript key'; const parse server url = 'https //parseapi back4app com/'; parse initialize(parse app id, parse js key); parse serverurl = parse server url; const app = new app({ target document getelementbyid('app') }); export default app; con tu backend conectado, ahora puedes construir la interfaz de la lista de tareas e implementar operaciones crud desarrollando el frontend tu aplicación svelte consistirá en componentes que te permitirán agregar, mostrar, actualizar y eliminar tareas aprovecharás la reactividad de svelte para actualizaciones dinámicas estructurando tus componentes crea una carpeta de componentes dentro de src para organizar tus componentes svelte mkdir src/components crearás los siguientes componentes taskform svelte – para agregar nuevas tareas tasklist svelte – para mostrar la lista de tareas taskitem svelte – para representar tareas individuales taskform svelte este componente renderiza un formulario que captura los detalles de la tarea y los envía a back4app \<script> import { createeventdispatcher } from 'svelte'; import parse from 'parse/dist/parse min js'; let title = ''; let description = ''; const dispatch = createeventdispatcher(); async function handlesubmit(event) { event preventdefault(); try { const task = parse object extend('task'); const task = new task(); task set('title', title); task set('description', description); task set('completed', false); await task save(); dispatch('refresh'); title = ''; description = ''; } catch (error) { console error('error adding task ', error); } } \</script> \<form on\ submit|preventdefault={handlesubmit}> \<input type="text" placeholder="task title" bind\ value={title} required /> \<input type="text" placeholder="description" bind\ value={description} required /> \<button type="submit">add task\</button> \</form> taskitem svelte este componente representa una tarea individual, permitiéndote alternar su estado de finalización o eliminarla \<script> import parse from 'parse/dist/parse min js'; export let task; export let refresh; async function togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(task id); tasktoupdate set('completed', !task completed); await tasktoupdate save(); refresh(); } catch (error) { console error('error updating task ', error); } } async function deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(task id); await tasktodelete destroy(); refresh(); } catch (error) { console error('error deleting task ', error); } } \</script> \<div class="task item {task completed ? 'completed' ''}"> \<div> \<h3>{task title}\</h3> \<p>{task description}\</p> \</div> \<div> \<button on\ click={togglecomplete}> {task completed ? 'undo' 'complete'} \</button> \<button on\ click={deletetask}>delete\</button> \</div> \</div> tasklist svelte este componente muestra todas las tareas iterando sobre ellas y renderizando cada una usando taskitem \<script> import taskitem from ' /taskitem svelte'; export let tasks = \[]; export let refresh; \</script> {#if tasks length === 0} \<p>no tasks available\</p> {\ else} {#each tasks as task (task id)} \<taskitem {task} {refresh} /> {/each} {/if} app svelte en tu componente principal, gestiona el estado de la aplicación e integra tus componentes de tarea \<script> import { onmount } from 'svelte'; import parse from 'parse/dist/parse min js'; import taskform from ' /components/taskform svelte'; import tasklist from ' /components/tasklist svelte'; let tasks = \[]; async function fetchtasks() { try { const task = parse object extend('task'); const query = new parse query(task); const results = await query find(); tasks = results map(task => ({ id task id, task tojson() })); } catch (error) { console error('error fetching tasks ', error); } } onmount(fetchtasks); \</script> \<div class="container"> \<h1>to do list\</h1> \<taskform on\ refresh={fetchtasks} /> \<tasklist {tasks} refresh={fetchtasks} /> \</div> estilizando la aplicación crea un src/global css archivo para agregar estilos básicos container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } container h1 { margin bottom 20px; } form { display flex; flex direction column; align items center; gap 10px; margin bottom 20px; } form input\[type="text"] { width 80%; max width 400px; padding 8px; box sizing border box; font size 1rem; } form button { padding 8px 16px; cursor pointer; font size 1rem; border none; background color #eaeaea; transition background color 0 2s ease; } form button\ hover { background color #ccc; } task item { display flex; flex direction column; align items center; justify content center; gap 12px; border 1px solid #ccc; border radius 6px; padding 15px; margin 10px 0; background color #fafafa; text align center; transition background color 0 2s ease; } task item completed h3, task item completed p { text decoration line through; color #888; } task item h3 { margin 0; font size 1 1rem; } task item p { margin 0; font size 1rem; } task item button { padding 6px 12px; border none; background color #eaeaea; cursor pointer; font size 0 9rem; } task item button\ hover { background color #ccc; } @media (min width 600px) { task item { flex direction row; } } importa esta hoja de estilos en tu src/main js import ' /global css'; desplegando el frontend en back4app web deployment back4app web deployment ofrece un entorno en contenedores para alojar tu aplicación svelte configurando vite para producción ajusta vite config js si es necesario para establecer correctamente la ruta base para un entorno en contenedores import { defineconfig } from 'vite'; import { svelte } from '@sveltejs/vite plugin svelte'; export default defineconfig({ plugins \[svelte()], base ' /', }); genera la construcción de producción npm run build creando un dockerfile crea un dockerfile en el directorio raíz con el siguiente contenido \# stage 1 build the svelte app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build \# stage 2 serve the app using nginx from nginx\ alpine copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] probando el contenedor docker localmente construye tu imagen docker docker build t todo frontend ejecuta el contenedor docker run p 8080 80 todo frontend abre http //localhost 8080 en tu navegador para verificar que tu aplicación svelte se sirva correctamente desplegando en back4app inicializa un repositorio git, agrega tus archivos de proyecto y haz un commit git init git add git commit m "initial commit for back4app deployment" git branch m main git remote add origin \<your github repository url> git push u origin main inicia sesión en back4app web deployment https //www back4app com/containers haz clic en "crear nueva aplicación" , proporciona el nombre de tu proyecto y selecciona tu repositorio de github autoriza a back4app y elige despliegue de dockerfile confirma la configuración de la construcción y haz clic en "desplegar" para iniciar la primera construcción monitoreo de tu despliegue después del despliegue, utiliza el panel de control de back4app para ver registros para depuración monitorear el rendimiento del contenedor y el uso de recursos activar reconstrucciones en nuevos compromisos configurar dominios personalizados si es necesario accede a tu aplicación en vivo en https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ pruebas y depuración después del despliegue, confirma que tu frontend de svelte se comunica correctamente con el backend de back4app verificación de api usa las herramientas de desarrollador de tu navegador (f12 → red) para inspeccionar las llamadas a la api operaciones de tareas agrega, completa y elimina tareas a través de la interfaz de usuario y verifica las actualizaciones en el navegador de base de datos de back4app manejo de errores revisa los registros de la consola en busca de errores y prueba casos límite como enviar tareas vacías pruebas de rendimiento simula condiciones de red lentas utilizando herramientas del navegador para evaluar la capacidad de respuesta mejores prácticas para usar back4app con svelte para optimizar tu aplicación solicitudes eficientes usa operaciones por lotes al manejar múltiples tareas const tasks = \[task1, task2, task3]; parse object saveall(tasks); consultas optimizadas recuperar solo los campos necesarios query select('title', 'completed'); variables de entorno almacenar claves sensibles en un env archivo vite parse app id=your app id vite parse js key=your js key seguridad usar acls para restringir el acceso task setacl(new parse acl(parse user current())); descarga de backend aprovechar cloud code para lógica de negocio compleja para reducir la exposición de la api conclusión ahora has construido una aplicación de lista de tareas de pila completa creando un frontend de svelte, integrándolo con el backend de back4app y desplegándolo utilizando flujos de trabajo en contenedores este tutorial te guió a través de cada paso—desde el desarrollo local hasta el despliegue en la nube—asegurando una interacción fluida entre tu ui de svelte y los servicios de backend mirando hacia adelante, considera mejorar tu aplicación con actualizaciones en tiempo real, autenticación mejorada e integraciones de terceros para más aprendizaje, visita la documentación de back4app https //www back4app com/docs y explora recursos de la comunidad