Quickstarters
¿Cómo construir un frontend de Nuxt.js y conectarlo a un backend?
36 min
en este tutorial, construirás una aplicación de lista de tareas utilizando nuxt js 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 dinámica y receptiva utilizando nuxt js al final de este tutorial, tu aplicación interactuará sin problemas con un backend que gestiona el almacenamiento de datos, la autenticación y más desarrollar una aplicación de pila completa puede ser un desafío debido a la configuración del backend y la gestión de bases de datos para simplificar tu proceso, utilizamos back4app— un potente backend como servicio —lo que te permite centrarte en desarrollar un frontend rico en funciones con nuxt js back4app proporciona una base de datos nosql completamente gestionada, autenticación de usuarios, cloud code para lógica personalizada y sdks para una integración sin esfuerzo esto te permite construir y desplegar aplicaciones escalables sin manejar la infraestructura del servidor conclusiones clave siguiendo este tutorial, tú inicializa un proyecto moderno de nuxt js utilizando la cli de nuxt integra un servicio backend para manejar 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 confirma las instalaciones con node v y npm v conocimientos básicos de nuxt js , incluyendo componentes, páginas y obtención de datos asíncrona una cuenta de back4app para gestionar tus servicios de backend regístrate en back4app https //www back4app com/ si aún no lo has hecho 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 de nuxt js asegúrate de tener node js (versión lts) instalado si no, descárgalo de nodejs org https //nodejs org/ crea tu proyecto de nuxt js utilizando la cli de nuxt npx nuxi init todo app navega 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 nuxt js en acción con tu 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 , que incluye una base de datos nosql, autenticación, cloud code y apis autogeneradas 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 "personalizada" nombra la clase tarea y establece sus permisos para permitir lectura y escritura pública (puedes refinar estos ajustes más tarde) en la clase tarea , añade los siguientes campos título (string) – el título de la tarea descripción (string) – detalles sobre la tarea completado (booleano) – 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 nuxt js usarás el parse javascript sdk para conectar tu aplicación nuxt js al backend de back4app instala el sdk de parse npm install parse configura el sdk creando un módulo dedicado por ejemplo, crea plugins/parse client js con el siguiente contenido 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; luego, registra este plugin en tu nuxt config ts (o nuxt config js ) export default { plugins \[ { src ' /plugins/parse client js', mode 'client' } ] } ahora puedes importar parse en tus páginas o componentes para interactuar con el backend desarrollando el frontend tu aplicación nuxt js consistirá en páginas y componentes para agregar, mostrar, actualizar y eliminar tareas aprovecha el enrutamiento basado en archivos de nuxt y la obtención de datos asíncrona para crear una lista de tareas dinámica estructurando tus componentes crea una components carpeta en tu proyecto para organizar tus componentes de ui mkdir components crearás los siguientes componentes taskform vue – para agregar nuevas tareas tasklist vue – para mostrar la lista de tareas taskitem vue – para representar tareas individuales taskform vue este componente renderiza un formulario que captura los detalles de la tarea y los envía a back4app \<template> \<form @submit prevent="handlesubmit"> \<input type="text" placeholder="task title" v model="title" required /> \<input type="text" placeholder="description" v model="description" required /> \<button type="submit">add task\</button> \</form> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskform', data() { return { title '', description '' }; }, methods { async handlesubmit() { try { const task = parse object extend('task'); const task = new task(); task set('title', this title); task set('description', this description); task set('completed', false); await task save(); this $emit('refresh'); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } }; \</script> taskitem vue este componente representa una tarea individual y proporciona botones para alternar su estado de finalización o eliminar la tarea \<template> \<div \ class="\['task item', { completed task completed }]"> \<div> \<h3>{{ task title }}\</h3> \<p>{{ task description }}\</p> \</div> \<div> \<button @click="togglecomplete"> {{ task completed ? 'undo' 'complete' }} \</button> \<button @click="deletetask">delete\</button> \</div> \</div> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskitem', props \['task'], methods { async togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(this task id); tasktoupdate set('completed', !this task completed); await tasktoupdate save(); this $emit('refresh'); } catch (error) { console error('error updating task ', error); } }, async deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(this task id); await tasktodelete destroy(); this $emit('refresh'); } catch (error) { console error('error deleting task ', error); } } } }; \</script> tasklist vue este componente muestra la lista de tareas iterando sobre un array y renderizando cada tarea utilizando el componente taskitem \<template> \<div> \<p v if="tasks length === 0">no tasks available\</p> \<taskitem v for="task in tasks" \ key="task id" \ task="task" @refresh="refreshtasks" /> \</div> \</template> \<script> import taskitem from ' /taskitem vue'; export default { name 'tasklist', props \['tasks'], methods { refreshtasks() { this $emit('refresh'); } }, components { taskitem } }; \</script> integración de página en tu página principal (por ejemplo, pages/index vue ), gestiona el estado de las tareas e integra tus componentes \<template> \<div class="container"> \<h1>to do list\</h1> \<taskform @refresh="fetchtasks" /> \<tasklist \ tasks="tasks" @refresh="fetchtasks" /> \</div> \</template> \<script> import taskform from ' /components/taskform vue'; import tasklist from ' /components/tasklist vue'; import parse from 'parse/dist/parse min js'; export default { components { taskform, tasklist }, data() { return { tasks \[] }; }, methods { async fetchtasks() { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); this tasks = results map((task) => ({ id task id, task tojson() })); } catch (error) { console error("error fetching tasks ", error); } }, }, mounted() { this fetchtasks(); } }; \</script> estilizando la aplicación crea una hoja de estilo global (por ejemplo, assets/css/main css ) para agregar estilos básicos container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } 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; } } incluye esta hoja de estilo en tu configuración de nuxt añadiéndola al css array en nuxt config ts export default { css \[' /assets/css/main css'] } desplegando el frontend en back4app web deployment back4app web deployment ofrece un entorno containerizado para alojar tu aplicación nuxt js configurando nuxt js para producción actualiza tu nuxt config ts si es necesario para establecer la ruta base para el despliegue export default { router { base ' /' } } generar la construcción de producción npm run build npm run generate creando un dockerfile crea un dockerfile en la raíz de tu proyecto con el siguiente contenido # stage 1 build the nuxt js app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build run npm run generate \# 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 nuxt js 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 el despliegue 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 nuxt js 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 extremos como envíos vacíos 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 nuxt js para optimizar tu aplicación solicitudes eficientes usa operaciones por lotes para manejar múltiples tareas const tasks = \[task1, task2, task3]; parse object saveall(tasks); consultas optimizadas recuperar solo los campos necesarios query select('title', 'completed'); gestión del entorno almacenar claves sensibles en variables de entorno nuxt public parse app id=your app id nuxt public 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 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 nuxt js, 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 interfaz de usuario de nuxt js y los servicios de backend mirando hacia adelante, considera mejoras como 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