Quickstarters
Como Construir um Frontend Gatsby e Conectá-lo a um Backend?
33 min
neste tutorial, você construirá um aplicativo de lista de tarefas usando gatsby e o conectará a um backend robusto fornecido pelo back4app este guia é ideal para aqueles que desejam integrar operações crud essenciais (criar, ler, atualizar, excluir) em um site rápido e estático ao final, você terá um aplicativo totalmente funcional que demonstra como aproveitar os serviços de backend do back4app enquanto usa o gatsby para um frontend extremamente rápido construir um aplicativo full stack pode ser desafiador, com complexidades como configuração de backend, gerenciamento de banco de dados, autenticação e implantação para simplificar esse processo, usamos o back4app—uma solução escalável de backend as a service (baas) —para que você possa se concentrar em construir seu site gatsby enquanto ele cuida da hospedagem, bancos de dados e apis o back4app oferece um conjunto abrangente de serviços de backend, incluindo um banco de dados pronto para uso, autenticação, cloud code para lógica do lado do servidor e integrações de sdk sem costura seu suporte para implantações em contêineres o torna uma excelente opção para aplicativos full stack modernos com essas ferramentas, você pode desenvolver e implantar aplicativos rapidamente sem gerenciar a infraestrutura do servidor principais conclusões seguindo este tutorial, você aprenderá a inicializar um projeto moderno do gatsby integrar um serviço de backend para gerenciar os dados do seu aplicativo implementar operações crud essenciais para uma experiência interativa do usuário implantar uma aplicação funcional de lista de tarefas usando fluxos de trabalho em contêiner no back4app pré requisitos certifique se de ter o seguinte antes de começar node js e npm instale a versão lts mais recente do node js em nodejs org https //nodejs org/ e verifique executando node v e npm v no seu terminal conhecimento básico de gatsby familiaridade com react, graphql e a camada de dados do gatsby é esperada se você é novo no gatsby, considere revisar seus fundamentos primeiro uma conta no back4app inscreva se em back4app https //www back4app com/ para configurar e gerenciar seus serviços de backend com esses pré requisitos em vigor, você está pronto para configurar seu projeto e começar a construir configuração do projeto comece configurando seu ambiente de desenvolvimento local e inicializando seu projeto gatsby verifique se node js (versão lts) está instalado se necessário, baixe o de nodejs org https //nodejs org/ verifique sua instalação node v npm v crie um novo projeto gatsby usando o gatsby cli execute o seguinte comando (substitua todo app pelo nome desejado do seu projeto) npx gatsby new todo app mude para o diretório do seu projeto cd todo app inicie o servidor de desenvolvimento para verificar a configuração npx gatsby develop seu site gatsby deve agora estar rodando localmente abra a url fornecida em seu navegador para confirmar em seguida, você configurará seu backend no back4app para gerenciar o armazenamento de dados e as interações da api criando o backend todo back4app fornece um serviço de backend totalmente gerenciado alimentado por parse , oferecendo um banco de dados nosql, autenticação, cloud code e apis geradas automaticamente desde o início esta seção irá guiá lo na criação de um modelo de dados de tarefa para armazenar seus itens de lista de tarefas e conectá lo com seu frontend gatsby configurando seu aplicativo backend faça login na sua painel do back4app https //www back4app com/ e clique "criar um novo app " nomeie seu aplicativo (por exemplo, todogatsbyapp ) e selecione nodejs/parse como o tipo de backend uma vez que o app é criado, navegue até "banco de dados" > "navegador" clique "criar uma classe" e escolha "personalizado" nomeie a classe tarefa e defina as permissões de nível de classe para permitir leitura e escrita públicas (você pode refinar essas configurações mais tarde) na classe tarefa adicione os seguintes campos título (string) – o título da tarefa descrição (string) – detalhes sobre a tarefa completado (booleano) – indica se a tarefa está completa datadevencimento (data) – o prazo para a tarefa clique "salvar" para finalizar seu esquema integrando back4app com gatsby integre o back4app ao seu projeto gatsby usando o parse javascript sdk instale o sdk via npm npm install parse configure o sdk inicializando o com seu application id e javascript key recupere essas credenciais no seu painel back4app em app settings > security & keys no seu projeto, crie um arquivo (por exemplo, src/utils/parse config js ) e adicione a seguinte configuração // src/utils/parse config 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; agora você pode importar essa configuração em suas páginas e componentes gatsby para interagir com seu backend desenvolvendo o frontend com gatsby agora que seu backend está conectado, construa a interface do usuário para seu aplicativo de lista de tarefas usando gatsby você criará páginas e componentes para adicionar, exibir, atualizar e excluir tarefas enquanto aproveita o react e o graphql organizando seus componentes seu aplicativo incluirá os seguintes componentes principais taskform js – lida com a adição de novas tarefas tasklist js – exibe todas as tarefas e fornece controles para marcar tarefas como concluídas ou excluí las taskitem js – representa uma tarefa individual com ações para alternar a conclusão ou removê la crie uma pasta de componentes dentro de src e adicione esses arquivos mkdir src/components touch src/components/taskform js src/components/tasklist js src/components/taskitem js gerenciando estado com react hooks use hooks do react ( usestate e useeffect ) para gerenciamento de estado e efeitos colaterais na sua página principal (por exemplo, src/pages/index js ), configure o estado da seguinte forma // src/pages/index js import react, { usestate, useeffect } from "react"; import parse from " /utils/parse config"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; const indexpage = () => { const \[tasks, settasks] = usestate(\[]); 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); } }; useeffect(() => { fetchtasks(); }, \[]); return ( \<div classname="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks} fetchtasks={fetchtasks} /> \</div> ); }; export default indexpage; construindo o componente do formulário de tarefas em taskform js , crie um formulário controlado para adicionar tarefas gerencie os valores de entrada usando usestate , e envie os dados para o back4app // src/components/taskform js import react, { usestate } from "react"; import parse from " /utils/parse config"; const taskform = ({ fetchtasks }) => { const \[title, settitle] = usestate(""); const \[description, setdescription] = usestate(""); const handlesubmit = 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(); fetchtasks(); settitle(""); setdescription(""); } catch (error) { console error("error adding task ", error); } }; return ( \<form onsubmit={handlesubmit}> \<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> ); }; export default taskform; exibindo a lista de tarefas em tasklist js , renderize a lista de tarefas mapeando o array de tarefas e usando o taskitem componente // src/components/tasklist js import react from "react"; import taskitem from " /taskitem"; const tasklist = ({ tasks, fetchtasks }) => { return ( \<div> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map(task => ( \<taskitem key={task id} task={task} fetchtasks={fetchtasks} /> )) )} \</div> ); }; export default tasklist; criando o componente item de tarefa em taskitem js , crie um componente que permita marcar uma tarefa como concluída ou excluí la // src/components/taskitem js import react from "react"; import parse from " /utils/parse config"; const taskitem = ({ task, fetchtasks }) => { const handlecomplete = async () => { try { const query = new parse query("task"); const tasktoupdate = await query get(task id); tasktoupdate set("completed", !task completed); await tasktoupdate save(); fetchtasks(); } catch (error) { console error("error updating task ", error); } }; const handledelete = async () => { try { const query = new parse query("task"); const tasktodelete = await query get(task id); await tasktodelete destroy(); fetchtasks(); } catch (error) { console error("error deleting task ", error); } }; return ( \<div classname={`task item ${task completed ? "completed" ""}`}> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={handlecomplete}> {task completed ? "undo" "complete"} \</button> \<button onclick={handledelete}>delete\</button> \</div> ); }; export default taskitem; estilizando seu aplicativo crie um styles css arquivo na src pasta com estilo básico / src/styles 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; 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; } container p { font size 1rem; } 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 este css no seu layout ou página gatsby (por exemplo, em gatsby browser js ) // gatsby browser js import " /src/styles css"; finalizando a ui sua aplicação de lista de tarefas gatsby agora possui um frontend dinâmico integrado com back4app e estilização personalizada o aplicativo permite que você adicione, exiba, atualize e exclua tarefas, garantindo uma comunicação eficiente entre frontend e backend em seguida, você implantará seu site gatsby usando a plataforma de implantação web do back4app implantando o frontend na implantação web do back4app o back4app web deployment oferece um ambiente totalmente gerenciado e containerizado para hospedar suas aplicações com implantações baseadas em docker, você pode empacotar seu site gatsby e implantá lo sem esforço configurando o gatsby para produção o gatsby gera um site estático por padrão construa seu site pronto para produção com npx gatsby build criando um dockerfile para seu site antes de criar um dockerfile , primeiro crie um dockerignore no diretório raiz do seu projeto e adicione estas linhas de código git node modules eslint prettier git vscode readme md dockerfile docker compose yml public cache em seguida, crie um docker compose yml para usar comandos de docker compose o alvo do arquivo deve ser a etapa de implantação no seu dockerfile seu docker compose yml deve conter os comandos abaixo version '3' services app image todo app gatsby build context dockerfile dockerfile target deploy ports \ "8000 80" agora, você cria um dockerfile na raiz do projeto para containerizar seu site gatsby from node 20 as build workdir /usr/src/app copy run npm install run npm run build from nginx 1 18 alpine as deploy workdir /usr/share/nginx/html run rm rf / copy from=build /usr/src/app/public entrypoint \[ "nginx", " g", "daemon off;" ] testando o container localmente antes da implantação, construa e teste seu container docker docker build t todo gatsby frontend execute o contêiner docker run p 8000 80 todo gatsby frontend visite http //localhost 8000 no seu navegador para verificar se seu site está sendo servido corretamente enviando para o github e implantando via back4app envie seu projeto para o 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 em seguida, faça a implantação usando a implantação web do back4app faça login em implantação web do back4app https //www back4app com/containers clique "criar novo app" , forneça um nome e selecione repositório github autorize o back4app a acessar seu repositório e selecione o todo gatsby repositório escolha implantação dockerfile e confirme as configurações de build clique "implantar" para iniciar o processo de build monitoramento e gerenciamento de implantações após a implantação, use o painel do back4app para ver logs para solução de problemas monitorar o desempenho do contêiner e o uso de recursos acionar novas implantações em novos commits configurar domínios personalizados, se necessário testando e depurando seu aplicativo uma vez implantado, teste completamente seu site gatsby verifique a conectividade da api abra o console de desenvolvedor do seu navegador (f12 → rede) para verificar chamadas de api durante as operações de tarefa adicionar e recuperar tarefas use a interface para adicionar tarefas, depois atualize para confirmar a persistência dos dados no navegador de banco de dados back4app testar operações crud certifique se de que marcar tarefas como concluídas e a exclusão se reflitam corretamente no backend lidar com casos limite valide as entradas do formulário e simule condições de rede lenta usando ferramentas de desenvolvedor se surgirem problemas, revise os logs do back4app ou verifique sua configuração de api melhores práticas para usar os serviços do back4app melhore o desempenho e a segurança de sua aplicação ao otimizar chamadas de api use solicitações em lote para múltiplas operações e consulte apenas os campos necessários proteger dados sensíveis armazene credenciais como id da aplicação e chave javascript em variáveis de ambiente com gatsby, crie um env arquivo gatsby parse app id=your app id gatsby parse js key=your js key ativando auto scaling ative o auto scaling na implantação da web do back4app para gerenciar alto tráfego aprimorando a segurança restringir permissões de nível de classe (clps) para controlar modificações de dados e configurar acls conforme necessário utilizando cloud code descarregue lógica complexa para o cloud code para melhor desempenho e redução da exposição da api conclusão você agora construiu uma aplicação de lista de tarefas full stack usando gatsby para o frontend e os robustos serviços de backend do back4app este tutorial o guiou na configuração de um projeto gatsby, na integração do sdk parse e na implantação do seu site usando fluxos de trabalho em contêiner no back4app à medida que você continua desenvolvendo, considere adicionar recursos como autenticação avançada de usuários, atualizações em tempo real e integrações de terceiros para mais informações e suporte, consulte a documentação do back4app https //www back4app com/docs