Quickstarters
Como Construir um Frontend Angular e Conectá-lo a um Backend?
39 min
neste tutorial, você construirá um aplicativo de lista de tarefas usando angular e o conectará a um serviço de backend gerenciado alimentado pelo back4app este guia é projetado para você se deseja dominar operações crud essenciais (criar, ler, atualizar, excluir) e criar uma interface dinâmica e responsiva com angular ao final deste tutorial, seu aplicativo se comunicará perfeitamente com um backend que gerencia armazenamento de dados, autenticação e muito mais construir um aplicativo full stack muitas vezes envolve configuração complexa de backend e gerenciamento de banco de dados para simplificar seu fluxo de trabalho, usamos o back4app— um robusto backend as a service —para que você possa se concentrar no desenvolvimento de um frontend angular rico em recursos o back4app fornece um banco de dados nosql totalmente gerenciado, autenticação de usuário, cloud code para lógica personalizada e sdks para integração perfeita isso permite que você construa e implante aplicativos escaláveis sem gerenciar a infraestrutura do servidor principais conclusões ao seguir este tutorial, você irá inicializar um projeto angular moderno usando angular cli integrar perfeitamente um serviço de backend para gerenciar os dados do seu aplicativo implementar operações crud essenciais para uma lista de tarefas dinâmica implantar seu aplicativo totalmente funcional usando fluxos de trabalho conteinerizados no back4app pré requisitos antes de começar, certifique se de que você tem node js e npm instalados em sua máquina verifique as instalações com node v e npm v conhecimento básico de angular , incluindo componentes, serviços e injeção de dependência uma conta back4app para gerenciar seus serviços de backend inscreva se em back4app https //www back4app com/ se você ainda não tiver com esses pré requisitos em vigor, você está pronto para começar a construir seu projeto configuração do projeto comece configurando seu ambiente de desenvolvimento local e inicializando um novo projeto angular usando o angular cli certifique se de que você tem node js (versão lts) instalado se não, baixe o de nodejs org https //nodejs org/ instale o angular cli globalmente se ainda não o fez npm install g @angular/cli crie um novo projeto angular ng new todo app routing style=css navegue até o diretório do seu projeto cd todo app inicie o servidor de desenvolvimento para verificar a configuração ng serve abra http //localhost 4200 no seu navegador para ver seu aplicativo angular em ação com o frontend pronto, prossiga para criar seu backend no back4app criando o backend de tarefas back4app oferece um serviço de backend totalmente gerenciado alimentado por parse , incluindo um banco de dados nosql, autenticação, cloud code e apis geradas automaticamente siga estas etapas para configurar seu backend faça login na sua painel do back4app https //www back4app com/ e clique "criar um novo app " nomeie seu app (por exemplo, todoapp ) e selecione nodejs/parse como o tipo de backend navegue até "banco de dados" > "navegador" , clique "criar uma classe" , e escolha "personalizado" nomeie a classe tarefa e defina as permissões para permitir leitura e escrita públicas (você pode refinar isso mais tarde) na classe tarefa , adicione os seguintes campos título (string) – o título da tarefa descrição (string) – detalhes sobre a tarefa concluída (boolean) – status de conclusão da tarefa datadevencimento (data) – o prazo para a tarefa clique "salvar" para criar o esquema integrando o back4app com angular você usará o parse javascript sdk para conectar seu aplicativo angular ao backend do back4app instale o parse sdk npm install parse configure o sdk em seu projeto angular abra src/app/app module ts (ou crie um serviço dedicado) e inicialize o parse com seu application id e javascript key do painel do back4app (encontrado em app settings > security & keys ) por exemplo, crie um serviço parse service ts no diretório 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/'; } } então, em seus componentes, simplesmente injete o parseservice no construtor o serviço executará seu construtor uma vez (na inicialização do aplicativo), inicializando o parse para você com seu backend conectado, você pode agora construir a interface do to do list e implementar operações crud desenvolvendo o frontend seu aplicativo angular consistirá em componentes e serviços para adicionar, exibir, atualizar e excluir tarefas você aproveitará a arquitetura de componentes do angular e a injeção de dependência para um gerenciamento de dados suave estruturando seus componentes gere os seguintes componentes usando o angular cli ng generate component components/task form ng generate component components/task list ng generate component components/task item componenteformuláriotarefa este componente renderiza um formulário para adicionar novas tarefas ele captura a entrada do usuário e envia os dados da tarefa para o 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); } } } componentelistatarefas este componente exibe uma lista de tarefas iterando sobre um array e renderizando cada tarefa usando o componenteitemtarefa 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 {} } componentetaskitem este componente representa uma tarefa individual e fornece botões para alternar o status de conclusão ou excluir a tarefa {{ 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); } } } integração do appcomponent no seu componente principal, gerencie o estado das tarefas e integre os componentes de tarefa 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 a aplicação crie ou atualize os estilos nos arquivos css do seu componente ou em 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; } } implantando o frontend na implantação web do back4app a implantação web do back4app fornece um ambiente containerizado para hospedar sua aplicação angular configurando o angular para produção construa seu aplicativo angular pronto para produção ng build este comando gera um dist/ pasta contendo seu aplicativo angular compilado criando um dockerfile crie um dockerfile na raiz do seu projeto com o seguinte conteúdo 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"] testando o contêiner docker localmente construa sua imagem docker docker build t todo frontend execute o contêiner docker run p 4201 4200 todo frontend abra http //localhost 4201 no seu navegador para verificar se seu aplicativo angular está sendo servido corretamente implantando no back4app inicialize um repositório git, adicione seus arquivos de projeto e faça um 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 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 faça login em back4app web deployment https //www back4app com/containers clique em "criar novo app" , forneça o nome do seu projeto e selecione seu repositório do github autorize o back4app e escolha implantação dockerfile confirme as configurações de build e clique em "implantar" para iniciar o processo de implantação monitorando sua implantação após a implantação, use o painel do back4app para ver logs para depuração monitorar o desempenho do contêiner e o uso de recursos acionar reconstruções em novos commits configurar domínios personalizados, se necessário acesse seu aplicativo ao vivo em https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ testando e depurando após a implantação, confirme se seu frontend angular se comunica efetivamente com o backend back4app verificação da api use as ferramentas de desenvolvedor do seu navegador (f12 → rede) para inspecionar as requisições da api operações de tarefas adicione, complete e exclua tarefas pela interface do usuário e verifique as atualizações no navegador de banco de dados back4app tratamento de erros verifique os logs do console em busca de erros e teste casos extremos, como envios vazios teste de desempenho simule condições de rede lentas usando ferramentas do navegador para avaliar a responsividade melhores práticas para usar back4app com angular para otimizar sua aplicação requisições eficientes use operações em lote para lidar com várias tarefas const tasks = \[task1, task2, task3]; parse object saveall(tasks); consultas otimizadas recupere apenas os campos necessários query select('title', 'completed'); gerenciamento de ambiente armazene chaves sensíveis em variáveis de ambiente ng app parse app id=your app id ng app parse js key=your js key segurança use acls para restringir o acesso aos dados task setacl(new parse acl(parse user current())); descarregamento de backend aproveite o cloud code para lógica complexa e reduza a carga no frontend conclusão você agora construiu uma aplicação de lista de tarefas full stack criando um frontend angular, integrando o com o backend do back4app e implantando o usando fluxos de trabalho em contêiner este tutorial guiou você por cada etapa—desde o desenvolvimento local até a implantação na nuvem—garantindo uma interação robusta entre sua interface angular e os serviços de backend olhando para o futuro, considere melhorias como atualizações em tempo real, autenticação aprimorada e integrações de terceiros para mais aprendizado, visite a documentação do back4app https //www back4app com/docs e explore recursos da comunidade