Quickstarters
¿Cómo construir un frontend de Angular y conectarlo a un backend?
39 min
en este tutorial, construirás una aplicación de lista de tareas utilizando angular 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 con angular al final de este tutorial, tu aplicación se comunicará sin problemas con un backend que maneja el almacenamiento de datos, la autenticación y más construir una aplicación de pila completa a menudo implica una configuración de backend compleja y gestión de bases de datos para simplificar tu flujo de trabajo, utilizamos back4app— un robusto backend como servicio —para que puedas centrarte en desarrollar un frontend de angular rico en características 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 problemas esto te permite construir y desplegar aplicaciones escalables sin gestionar la infraestructura del servidor puntos clave siguiendo este tutorial, tú inicializa un proyecto moderno de angular utilizando angular cli 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 las instalaciones con node v y npm v conocimientos básicos de angular , incluyendo componentes, servicios e inyección de dependencias 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 angular utilizando angular cli asegúrate de tener node js (versión lts) instalado si no, descárgalo de nodejs org https //nodejs org/ instala el angular cli globalmente si aún no lo has hecho npm install g @angular/cli crea un nuevo proyecto de angular ng new todo app routing style=css navega a tu directorio de proyecto cd todo app inicia el servidor de desarrollo para verificar la configuración ng serve abre http //localhost 4200 en tu navegador para ver tu aplicación angular 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 totalmente 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 los permisos para permitir lectura y escritura pública (puedes refinar esto más tarde) en la clase tarea , agrega 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 angular usarás el parse javascript sdk para conectar tu aplicación angular al backend de back4app instala el sdk de parse npm install parse configura el sdk en tu proyecto angular abre src/app/app module ts (o crea un servicio dedicado) e inicializa parse con tu application id y javascript key desde el dashboard de back4app (encontrado bajo app settings > security & keys ) por ejemplo, crea un servicio parse service ts en el directorio src import { injectable } from '@angular/core'; import parse from 'parse'; @injectable({ providedin 'root', }) export class parseservice { constructor() { const parse app id = "your application id"; const parse js key = "your javascript key"; parse initialize(parse app id, parse js key); (parse as any) serverurl = 'https //parseapi back4app com/'; } } luego, en tus componentes, simplemente inyecta parseservice en el constructor el servicio ejecutará su constructor una vez (al inicio de la aplicación), inicializando parse para ti con tu backend conectado, ahora puedes construir la interfaz de usuario de la lista de tareas e implementar operaciones crud desarrollando el frontend tu aplicación angular consistirá en componentes y servicios para agregar, mostrar, actualizar y eliminar tareas aprovecharás la arquitectura de componentes de angular y la inyección de dependencias para una gestión de datos fluida estructurando tus componentes genera los siguientes componentes usando angular cli ng generate component components/task form ng generate component components/task list ng generate component components/task item componenteformulariotarea este componente renderiza un formulario para agregar nuevas tareas captura la entrada del usuario y envía los datos de la tarea a back4app add task // src/app/components/task form/task form component ts import { component, eventemitter, output } from '@angular/core'; import { formsmodule } from '@angular/forms'; import as parse from 'parse'; @component({ selector 'app task form', templateurl ' /task form component html', styleurls \[' /task form component css'], imports \[formsmodule] }) export class taskformcomponent { title = ''; description = ''; @output() refreshtasks = new eventemitter\<void>(); async onsubmit() { 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 refreshtasks emit(); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } componentelistatareas este componente muestra una lista de tareas iterando sobre un arreglo y renderizando cada tarea usando el componenteitemtarea no tasks available // src/app/components/task list/task list component ts import { component, input, oninit } from '@angular/core'; import { commonmodule } from '@angular/common'; import as parse from 'parse'; import { taskitemcomponent } from ' /task item/task item component'; @component({ selector 'app task list', templateurl ' /task list component html', styleurls \[' /task list component css'], imports \[commonmodule, taskitemcomponent] }) export class tasklistcomponent implements oninit { @input() tasks any\[] = \[]; @input() fetchtasks! () => void; ngoninit() void {} } taskitemcomponent este componente representa una tarea individual y proporciona botones para alternar el estado de finalización o eliminar la tarea {{ task title }} {{ task description }} {{ task completed ? 'undo' 'complete' }} delete // src/app/components/task item/task item component ts import { component, eventemitter, input, output } from '@angular/core'; import as parse from 'parse'; @component({ selector 'app task item', templateurl ' /task item component html', styleurls \[' /task item component css'] }) export class taskitemcomponent { @input() task any; @output() taskchanged = new eventemitter\<void>(); 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 taskchanged emit(); } 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 taskchanged emit(); } catch (error) { console error('error deleting task ', error); } } } integración de appcomponent en tu componente principal, gestiona el estado de las tareas e integra los componentes de tareas to do list // src/app/app component ts import { component, oninit } from '@angular/core'; import { parseservice } from ' /parse service'; import as parse from 'parse'; import { taskformcomponent } from ' /components/task form/task form component'; import { tasklistcomponent } from ' /components/task list/task list component'; @component({ selector 'app root', imports \[taskformcomponent, tasklistcomponent], templateurl ' /app component html', styleurl ' /app component css' }) export class appcomponent implements oninit { constructor(private parseservice parseservice) {} tasks any\[] = \[]; 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); } } ngoninit() void { this fetchtasks(); } } estilizando la aplicación crea o actualiza los estilos en tus archivos css de componente o en src/styles css / src/styles css / 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; } } desplegando el frontend en back4app web deployment back4app web deployment proporciona un entorno en contenedor para alojar tu aplicación angular configurando angular para producción construye tu aplicación angular lista para producción ng build este comando genera una dist/ carpeta que contiene tu aplicación angular compilada creando un dockerfile crea un dockerfile en la raíz de tu proyecto con el siguiente contenido from node 18 alpine as build workdir /app copy package json package lock json / run npm install g @angular/cli run npm install copy run ng build cmd \["ng", "serve", " host", "0 0 0 0"] probando el contenedor de docker localmente construye tu imagen de docker docker build t todo frontend ejecuta el contenedor docker run p 4201 4200 todo frontend abre http //localhost 4201 en tu navegador para verificar que tu aplicación angular se sirva correctamente desplegando en back4app inicializa un repositorio de 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 maingit 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 maingit 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 maingit 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 maingit 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 maingit 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 inicie sesión en back4app web deployment https //www back4app com/containers haga clic en "crear nueva aplicación" , proporcione el nombre de su proyecto y seleccione su repositorio de github autorice back4app y elija dockerfile deployment confirme la configuración de la construcción y haga clic en "desplegar" para iniciar el proceso de despliegue monitoreo de su despliegue después del despliegue, use 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 commits configurar dominios personalizados si es necesario acceda a su 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 de la implementación, confirma que tu frontend de angular se comunique efectivamente con el backend de back4app verificación de api utiliza las herramientas de desarrollador de tu navegador (f12 → red) para inspeccionar las solicitudes de 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 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 angular para optimizar tu aplicación solicitudes eficientes utiliza 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 ng app parse app id=your app id ng app parse js key=your js key seguridad usar acls para restringir el acceso a los datos task setacl(new parse acl(parse user current())); descarga de backend aprovechar cloud code para lógica compleja y reducir la carga en el frontend conclusión ahora has construido una aplicación de lista de tareas de pila completa creando un frontend de angular, 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 robusta entre tu interfaz de usuario de angular 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