Quickstarters
Como Construir um Frontend Vue e Conectá-lo a um Backend?
34 min
neste tutorial, você construirá um aplicativo de lista de tarefas usando vue e o conectará a um serviço de backend gerenciado este guia é perfeito para você se deseja dominar operações crud essenciais (criar, ler, atualizar, excluir) e construir uma interface de usuário intuitiva ao final, seu aplicativo interagirá totalmente com um backend alimentado pelo back4app desenvolver um aplicativo full stack pode envolver configurações complexas de backend, gerenciamento de banco de dados e autenticação de usuários para permitir que você se concentre em criar um frontend vue excepcional, usaremos o back4app para gerenciar o backend sem esforço o back4app fornece um banco de dados pronto para uso, autenticação, cloud code para lógica de servidor personalizada e sdks para integrar com seu aplicativo isso permite que você implante aplicativos escaláveis sem a complicação da manutenção do servidor principais conclusões ao seguir este tutorial, você irá configurar um projeto vue moderno usando ferramentas padrão da indústria 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 por meio de fluxos de trabalho containerizados 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 vue , incluindo componentes, dados reativos e manipulação de eventos familiaridade com a api de composição do vue 3 é benéfica uma conta back4app para gerenciar seus serviços de backend registre se em back4app https //www back4app com/ se você ainda não tiver com isso em ordem, você está pronto para configurar seu projeto configuração do projeto comece preparando seu ambiente de desenvolvimento local e inicializando seu projeto vue com vite para uma experiência de construção rápida e moderna verifique se você tem node js (versão lts) instalado se não, baixe o de nodejs org https //nodejs org/ crie seu projeto vue executando npm create vite\@latest todo app 3\ mude para o diretório do seu projeto cd todo app 4\ instale as dependências npm install 5\ inicie o servidor de desenvolvimento para garantir que tudo funcione npm run dev abra a url fornecida no seu navegador com seu frontend vue pronto, o próximo passo é configurar seu backend no back4app criando o backend todo back4app oferece um serviço de backend totalmente gerenciado, alimentado por parse , completo com um banco de dados nosql, autenticação de usuário, cloud code e geração automática de api siga estas etapas para criar um 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 vá para "banco de dados" > "navegador" , clique "criar uma classe" , e selecione "personalizado" nomeie a classe tarefa e defina as permissões para permitir leitura e escrita públicas (você pode refinar isso depois) 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) – quando a tarefa deve ser concluída clique "salvar" para criar o esquema integrando o back4app com vue você usará o parse javascript sdk para se comunicar entre seu frontend vue e o backend do back4app instale o sdk parse npm install parse configure o sdk editando src/main js importe o sdk e inicialize o com seu application id e javascript key do painel do back4app (encontrado em app settings > security & keys ) import { createapp } from 'vue'; import app from ' /app vue'; 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; createapp(app) mount('#app'); com seu backend conectado, você pode agora construir a interface da lista de tarefas e integrar operações crud desenvolvendo o frontend sua aplicação vue consistirá em componentes para adicionar, exibir, atualizar e remover tarefas você aproveitará a reatividade do vue para gerenciar o estado e garantir atualizações suaves estruturando seus componentes crie uma pasta components dentro de src para abrigar seus componentes vue mkdir src/components touch src/components/taskform vue src/components/tasklist vue src/components/taskitem vue taskform vue este componente lida com a adição de novas tarefas ele usa um formulário controlado para capturar a entrada do usuário \<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', props \['fetchtasks'], 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 fetchtasks(); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } }; \</script> tasklist vue este componente exibe a lista de tarefas e integra ações de tarefas \<template> \<div> \<p v if="!tasks length">no tasks available\</p> \<taskitem v for="task in tasks" \ key="task id" \ task="task" \ fetchtasks="fetchtasks" /> \</div> \</template> \<script> import taskitem from ' /taskitem vue'; export default { name 'tasklist', components { taskitem }, props \['tasks', 'fetchtasks'] }; \</script> taskitem vue este componente representa uma tarefa individual e inclui ações para marcar como concluída ou excluir \<template> \<div \ class="\['task item', { completed task completed }]"> \<div> \<h3>{{ task title }}\</h3> \<p>{{ task description }}\</p> \</div> \<div> \<button @click="handlecomplete"> {{ task completed ? 'undo' 'complete' }} \</button> \<button @click="handledelete">delete\</button> \</div> \</div> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskitem', props \['task', 'fetchtasks'], methods { async handlecomplete() { 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 fetchtasks(); } catch (error) { console error('error updating task ', error); } }, async handledelete() { try { const query = new parse query('task'); const tasktodelete = await query get(this task id); await tasktodelete destroy(); this fetchtasks(); } catch (error) { console error('error deleting task ', error); } } } }; \</script> gerenciando o estado em app vue no seu componente principal, você gerenciará a lista de tarefas usando os dados reativos do vue e os hooks de ciclo de vida \<template> \<div class="container"> \<h1>to do list\</h1> \<taskform \ fetchtasks="fetchtasks" /> \<tasklist \ tasks="tasks" \ fetchtasks="fetchtasks" /> \</div> \</template> \<script> import { ref, onmounted } from 'vue'; import parse from 'parse/dist/parse min js'; import taskform from ' /components/taskform vue'; import tasklist from ' /components/tasklist vue'; export default { name 'app', components { taskform, tasklist }, setup() { const tasks = ref(\[]); const fetchtasks = async () => { try { const task = parse object extend('task'); const query = new parse query(task); const results = await query find(); tasks value = results map(task => ({ id task id, task tojson() })); } catch (error) { console error('error fetching tasks ', error); } }; onmounted(fetchtasks); return { tasks, fetchtasks }; } }; \</script> estilizando a aplicação crie um styles css arquivo em src para adicionar 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; } } importe a folha de estilos em main js import ' /styles css'; implantando o frontend na implantação web do back4app a implantação web do back4app permite que você containerize sua aplicação vue para produção com docker configurando o vite para produção ajuste vite config js para definir o caminho base corretamente para um ambiente containerizado import { defineconfig } from 'vite'; import vue from '@vitejs/plugin vue'; export default defineconfig({ plugins \[vue()], base ' /', }); gere a build de produção npm run build criando um dockerfile crie um dockerfile no diretório raiz \# stage 1 build the vue 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;"] testando o contêiner docker localmente construa sua imagem docker docker build t todo frontend execute o contêiner docker run p 8080 80 todo frontend visite http //localhost 8080 para verificar se seu aplicativo vue está sendo servido corretamente implantando no back4app inicialize um repositório git, adicione seus arquivos 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 main faça login em implantação web do back4app https //www back4app com/containers clique "criar novo app" , forneça um nome para o projeto e selecione repositório github autorize o back4app a acessar seu repositório e escolha implantação dockerfile confirme as configurações de construção e clique "implantar" para acionar a primeira construção monitorando sua implantação após a implantação, use o painel do back4app para ver logs para depuração monitorar o uso de recursos e reinicializações de contêineres reimplantar em novos commits usando o "trigger build" opção configurar domínios personalizados, se necessário acesse o 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, certifique se de que seu frontend vue se comunica corretamente com o backend do back4app verificar chamadas de api abra as ferramentas de desenvolvedor do seu navegador (f12 → rede) para inspecionar as solicitações de api adicionar e recuperar tarefas use a interface do aplicativo para adicionar tarefas e verificar o navegador de banco de dados do back4app operações crud teste a conclusão e exclusão de tarefas, depois confirme as alterações no backend casos limite valide as entradas do formulário e simule condições de rede lentas (usando o chrome devtools) para avaliar o desempenho solução de problemas de questões comuns erros de cors atualize cabeçalhos e domínios permitidos no back4app (painel > configurações do app > segurança e chaves) para incluir sua url de frontend erros de autenticação (401) confirme se seu id de aplicação e chave javascript estão corretos problemas de implantação no backend verifique os logs do contêiner no painel do back4app e reinicie o contêiner se necessário melhores práticas para usar o back4app com vue para otimizar seu aplicativo solicitações de dados eficientes use solicitações em lote para múltiplas operações const tasks = \[task1, task2, task3]; parse object saveall(tasks); otimizar consultas solicitar apenas os campos necessários query select('title', 'completed'); variáveis de ambiente armazenar chaves sensíveis em um env arquivo vite parse app id=your app id vite parse js key=your js key segurança use acls para restringir o acesso task setacl(new parse acl(parse user current())); código em nuvem descarregar lógica complexa para funções de backend para reduzir a exposição da api conclusão você construiu com sucesso uma aplicação de lista de tarefas full stack configurando um frontend vue, integrando o com o backend do back4app e implantando o por meio de fluxos de trabalho em contêineres este tutorial demonstrou um caminho simplificado do desenvolvimento local para a implantação em nuvem, garantindo uma interação suave entre sua interface vue e os serviços de backend olhando para o futuro, considere melhorias como gerenciamento avançado de usuários, atualizações em tempo real e integração de serviços de terceiros para mais informações, visite a documentação do back4app https //www back4app com/docs e explore recursos da comunidade