Quickstarters
How to Build a Redwood.js Frontend and Connect It to a Backend?
22 min
en este tutorial, construirás una aplicación de lista de tareas utilizando redwood js y la conectarás a un backend gestionado en back4app esta guía práctica te llevará a través de cada paso—desde configurar tu proyecto de redwood js hasta integrar parse para la comunicación con el backend—para que puedas concentrarte en crear una interfaz de usuario dinámica y receptiva redwood js está diseñado para simplificar el desarrollo de pila completa al combinar un frontend moderno basado en react con una arquitectura de backend robusta en este tutorial, utilizarás back4app para gestionar tus servicios de backend, lo que te permitirá realizar operaciones crud esenciales sin la molestia de gestionar la infraestructura del servidor puntos clave al final de esta guía, podrás inicializar un proyecto moderno de redwood js con herramientas estándar de la industria conectar tu frontend de redwood js a un backend de back4app utilizando el sdk de javascript de parse implementar operaciones crud para gestionar tu lista de tareas contenerizar tu aplicación de redwood js y desplegarla a través de la implementación web de back4app requisitos previos antes de comenzar, asegúrate de tener lo siguiente node js y npm/yarn instalados en tu máquina verifica la instalación con node v y npm v o yarn v conocimientos básicos de redwood js , incluyendo la estructura del proyecto, enrutamiento y componentes familiaridad con los conceptos de react es beneficiosa una cuenta de back4app para configurar y gestionar tus servicios de backend regístrate en back4app https //www back4app com/ si es necesario con estos requisitos previos en su lugar, estás listo para configurar tu proyecto de redwood js y conectarlo a un backend escalable configuración del proyecto comienza creando una nueva aplicación redwood js abre tu terminal y ejecuta el siguiente comando, reemplazando todo app con el nombre de proyecto que desees yarn create redwood app todo app navega a tu directorio de proyecto cd todo app instala todas las dependencias yarn install ejecuta el servidor de desarrollo para verificar que tu proyecto esté configurado correctamente yarn rw dev visita la url mostrada en tu terminal para confirmar que tu aplicación redwood js está en funcionamiento configurando el backend de todo en back4app back4app proporciona un backend parse gestionado que simplifica el manejo de datos para tu aplicación en esta sección, crearás un modelo de datos para almacenar tareas para tu lista de tareas creando tu aplicación 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, todoredwoodapp ) y elige nodejs/parse como el tipo de backend en la "base de datos" > "navegador" sección, haz clic en "crear una clase" y selecciona "personalizada " nombra la clase tarea y establece sus permisos de nivel de clase para permitir lectura y escritura pública (ajusta estos ajustes más tarde según sea necesario) agrega los siguientes campos a la tarea clase título (string) – el título de la tarea descripción (string) – detalles sobre la tarea completado (boolean) – si la tarea está hecha fechadevencimiento (fecha) – la fecha límite para la tarea haz clic en "guardar" para finalizar el esquema integrando back4app con redwood js para conectar tu aplicación redwood js a back4app, instala el sdk de javascript de parse yarn add parse a continuación, configura parse creando un nuevo archivo en el web/src directorio nómbralo parseclient js y agrega el siguiente código reemplaza 'your application id' y 'your javascript key' con tus credenciales del panel de control de back4app (bajo configuración de la aplicación > seguridad y claves ) // web/src/parseclient js 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 export default parse esta configuración te permite llamar a los métodos de parse desde cualquier componente de redwood js construyendo el frontend con redwood js con tu backend conectado, es hora de construir la interfaz de la lista de tareas en redwood js, las páginas se colocan en el web/src/pages directorio creando la página de tareas crea una nueva carpeta llamada todopage en web/src/pages y añade un archivo llamado todopage jsx mkdir p web/src/pages/todopage touch web/src/pages/todopage/todopage jsx abre web/src/pages/todopage/todopage jsx y agrega el siguiente código // web/src/pages/todopage/todopage jsx import { usestate, useeffect } from 'react' import parse from 'src/parseclient' const todopage = () => { const \[tasks, settasks] = usestate(\[]) const \[title, settitle] = usestate('') const \[description, setdescription] = usestate('') useeffect(() => { fetchtasks() }, \[]) const fetchtasks = async () => { try { const task = parse object extend('task') const query = new parse query(task) const results = await query find() settasks(results map((task) => ({ id task id, task tojson() }))) } catch (error) { console error('error fetching tasks ', error) } } const addtask = async (e) => { e 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() settitle('') setdescription('') fetchtasks() } catch (error) { console error('error adding task ', error) } } const toggletask = async (id, currentstatus) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) task set('completed', !currentstatus) await task save() fetchtasks() } catch (error) { console error('error toggling task ', error) } } const deletetask = async (id) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) await task destroy() fetchtasks() } catch (error) { console error('error deleting task ', error) } } return ( \<div classname="container"> \<h1>to do list\</h1> \<form onsubmit={addtask} classname="form"> \<input type="text" placeholder="task title" value={title} onchange={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description} onchange={(e) => setdescription(e target value)} required /> \<button type="submit">add task\</button> \</form> \<div classname="tasks"> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map((task) => ( \<div key={task id} classname={`task item ${task completed ? 'completed' ''}`} \> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={() => toggletask(task id, task completed)}> {task completed ? 'undo' 'complete'} \</button> \<button onclick={() => deletetask(task id)}>delete\</button> \</div> )) )} \</div> \</div> ) } export default todopage configurando rutas para hacer que tu página de todo sea accesible, abre el routes jsx archivo ubicado en web/src/routes jsx y agrega una nueva ruta // web/src/routes jsx import todopage from 'src/pages/todopage/todopage' const routes = () => { return ( \<router> \<route path="/" page={todopage} name="todo" /> \<route notfound page={notfoundpage} /> \</router> ); }; export default routes; agregando estilos globales para agregar estilos globales, añade los estilos css a continuación al archivo css llamado index css en la web/src carpeta / web/src/index css / 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; 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; } tasks p { font size 1rem; } task item { display flex; flex direction column; align items 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; } } tu aplicación redwood js ahora cuenta con una interfaz funcional de lista de tareas que interactúa con un backend de back4app contenerizando y desplegando tu aplicación redwood js en back4app el despliegue web de back4app ofrece un entorno contenerizado que simplifica el despliegue de aplicaciones en esta sección, empaquetarás tu aplicación redwood js en un contenedor docker y la desplegarás preparando tu aplicación para producción primero, construye tu aplicación redwood js para producción yarn rw build web creando un dockerfile para configurar docker para tu proyecto redwood js, necesitas ejecutar el comando de configuración de docker en tu terminal yarn rw setup docker los comandos de configuración realizan varias tareas crea cuatro archivos dockerfile, dockerignore, docker compose dev yml y docker compose prod yml agrega el paquete @redwoodjs/api server al lado de la api y el paquete @redwoodjs/web server al lado de la web actualiza la configuración browser open en redwood toml si esta configuración permanece en verdadero, causará que el servidor de desarrollo se rompa al ejecutar docker compose dev yml el comando proporciona un dockerfile que construye tu aplicación redwood js y prepara una imagen de producción utilizando un runtime mínimo de node js puedes iniciar el archivo de composición de desarrollo con docker compose f /docker compose dev yml up abre http //localhost 8390 en tu navegador para verificar que tu aplicación redwood js está funcionando correctamente despliegue a través de back4app web deployment envía tu proyecto a github 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 luego, inicia sesión en back4app web deployment https //www back4app com/containers y sigue estos pasos haz clic en "crear nueva aplicación" e ingresa los detalles de tu proyecto selecciona repositorio de github y autoriza a back4app elige tu todo redwood repositorio selecciona despliegue de dockerfile y verifica la configuración de la construcción haz clic en "desplegar" para iniciar el proceso de despliegue después del despliegue, utiliza el panel de control de back4app para monitorear registros, gestionar construcciones y configurar dominios personalizados si es necesario pruebas y depuración de tu aplicación una vez desplegada, asegúrate de que tu aplicación funcione como se espera conectividad api utiliza las herramientas de desarrollador del navegador para verificar que las solicitudes de api para agregar, alternar y eliminar tareas sean exitosas persistencia de datos agrega tareas a través de la interfaz de usuario y actualiza para confirmar que las tareas persisten en la base de datos de back4app operaciones crud prueba alternar y eliminar tareas mientras verificas si hay errores en la consola o en los registros de la api casos especiales valida que las validaciones de entrada eviten envíos vacíos mejores prácticas y consejos de optimización para una aplicación segura y eficiente, considera lo siguiente optimiza las solicitudes api utiliza procesamiento por lotes y recupera solo los campos necesarios variables de entorno asegura credenciales sensibles (id de aplicación y clave de javascript) utilizando variables de entorno control de acceso implementa acls dinámicas para que solo los usuarios autorizados puedan modificar datos código en la nube descarga lógica compleja al código en la nube de back4app para mejorar el rendimiento y la seguridad conclusión ahora has construido una aplicación de lista de tareas de pila completa utilizando redwood js integrada con un backend de back4app este tutorial cubrió todo, desde la inicialización del proyecto y la integración del backend hasta el despliegue en contenedores a medida que continúas desarrollando, considera agregar características como gestión avanzada de usuarios, actualizaciones en tiempo real e integraciones de terceros para más información, explora la documentación de back4app https //www back4app com/docs y recursos de redwood js