Quickstarters
How to Build a Redwood.js Frontend and Connect It to a Backend?
22 min
neste tutorial, você irá construir um aplicativo de lista de tarefas usando redwood js e conectá lo a um backend gerenciado no back4app este guia prático o orienta em cada etapa—desde a configuração do seu projeto redwood js até a integração do parse para comunicação com o backend—para que você possa se concentrar em criar uma interface de usuário dinâmica e responsiva o redwood js foi projetado para simplificar o desenvolvimento full stack, combinando um frontend moderno baseado em react com uma arquitetura de backend robusta neste tutorial, você usará o back4app para gerenciar seus serviços de backend, permitindo que você execute operações crud essenciais sem a complicação de gerenciar a infraestrutura do servidor principais conclusões ao final deste guia, você será capaz de inicializar um projeto moderno em redwood js com ferramentas padrão da indústria conectar seu frontend em redwood js a um backend no back4app usando o sdk javascript do parse implementar operações crud para gerenciar sua lista de tarefas containerizar seu aplicativo redwood js e implantá lo via implantação web do back4app pré requisitos antes de começar, certifique se de ter o seguinte node js e npm/yarn instalados em sua máquina verifique a instalação com node v e npm v ou yarn v conhecimento básico de redwood js , incluindo a estrutura do projeto, roteamento e componentes familiaridade com conceitos de react é benéfica uma conta no back4app para configurar e gerenciar seus serviços de backend inscreva se em back4app https //www back4app com/ se necessário com esses pré requisitos em vigor, você está pronto para configurar seu projeto redwood js e conectá lo a um backend escalável configuração do projeto comece criando uma nova aplicação redwood js abra seu terminal e execute o seguinte comando, substituindo todo app pelo nome do seu projeto desejado yarn create redwood app todo app navegue até o diretório do seu projeto cd todo app instale todas as dependências yarn install execute o servidor de desenvolvimento para verificar se seu projeto está configurado corretamente yarn rw dev visite a url exibida no seu terminal para confirmar que seu aplicativo redwood js está em execução configurando o backend de tarefas no back4app o back4app fornece um backend parse gerenciado que simplifica o manuseio de dados para seu aplicativo nesta seção, você criará um modelo de dados para armazenar tarefas para sua lista de tarefas criando seu aplicativo backend faça login no seu painel do back4app https //www back4app com/ e clique "criar um novo app " nomeie seu aplicativo (por exemplo, todoredwoodapp ) e escolha nodejs/parse como o tipo de backend na seção "banco de dados" > "navegador" clique "criar uma classe" e selecione "personalizado " nomeie a classe tarefa e defina suas permissões de nível de classe para permitir leitura e escrita públicas (ajuste essas configurações mais tarde, se necessário) adicione os seguintes campos à classe tarefa título (string) – o título da tarefa descrição (string) – detalhes sobre a tarefa concluído (boolean) – se a tarefa está concluída datadevencimento (data) – o prazo para a tarefa clique "salvar" para finalizar o esquema integrando back4app com redwood js para conectar seu aplicativo redwood js ao back4app, instale o sdk javascript do parse yarn add parse em seguida, configure o parse criando um novo arquivo na web/src diretório nomeie o como parseclient js e adicione o seguinte código substitua 'your application id' e 'your javascript key' pelas suas credenciais do painel do back4app (em configurações do app > segurança & chaves ) // web/src/parseclient 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 esta configuração permite que você chame métodos parse de qualquer componente redwood js construindo o frontend com redwood js com seu backend conectado, é hora de construir a interface da lista de tarefas no redwood js, as páginas são colocadas na web/src/pages diretório criando a página de tarefas crie uma nova pasta chamada todopage em web/src/pages e adicione um arquivo chamado todopage jsx mkdir p web/src/pages/todopage touch web/src/pages/todopage/todopage jsx abra web/src/pages/todopage/todopage jsx e adicione o seguinte código // web/src/pages/todopage/todopage jsx import { usestate, useeffect } from 'react' import parse from 'src/parseclient' const todopage = () => { const \[tasks, settasks] = usestate(\[]) const \[title, settitle] = usestate('') const \[description, setdescription] = usestate('') useeffect(() => { fetchtasks() }, \[]) 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) } } const addtask = 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() settitle('') setdescription('') fetchtasks() } catch (error) { console error('error adding task ', error) } } const toggletask = async (id, currentstatus) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) task set('completed', !currentstatus) await task save() fetchtasks() } catch (error) { console error('error toggling task ', error) } } const deletetask = async (id) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) await task destroy() fetchtasks() } catch (error) { console error('error deleting task ', error) } } return ( \<div classname="container"> \<h1>to do list\</h1> \<form onsubmit={addtask} classname="form"> \<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> \<div classname="tasks"> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map((task) => ( \<div key={task id} classname={`task item ${task completed ? 'completed' ''}`} \> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={() => toggletask(task id, task completed)}> {task completed ? 'undo' 'complete'} \</button> \<button onclick={() => deletetask(task id)}>delete\</button> \</div> )) )} \</div> \</div> ) } export default todopage configurando rotas para tornar sua página de todo acessível, abra o routes jsx arquivo localizado em web/src/routes jsx e adicione uma nova rota // web/src/routes jsx import todopage from 'src/pages/todopage/todopage' const routes = () => { return ( \<router> \<route path="/" page={todopage} name="todo" /> \<route notfound page={notfoundpage} /> \</router> ); }; export default routes; adicionando estilos globais para adicionar estilos globais, adicione os estilos css abaixo ao arquivo css chamado index css na web/src pasta / web/src/index 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; 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; } tasks p { font size 1rem; } task item { display flex; flex direction column; align items 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; } } seu aplicativo redwood js agora possui uma interface funcional de lista de tarefas que interage com um backend back4app containerizando e implantando seu aplicativo redwood js no back4app a implantação web do back4app oferece um ambiente containerizado que simplifica a implantação de aplicativos nesta seção, você irá empacotar seu aplicativo redwood js em um contêiner docker e implantá lo preparando seu aplicativo para produção primeiro, construa seu aplicativo redwood js para produção yarn rw build web criando um dockerfile para configurar o docker para seu projeto redwood js, você precisa executar o comando de configuração do docker no seu terminal yarn rw setup docker os comandos de configuração realizam várias tarefas ele cria quatro arquivos dockerfile, dockerignore, docker compose dev yml e docker compose prod yml ele adiciona o pacote @redwoodjs/api server ao lado da api e o pacote @redwoodjs/web server ao lado da web ele atualiza a configuração browser open no redwood toml se essa configuração permanecer verdadeira, causará a quebra do servidor de desenvolvimento ao executar docker compose dev yml o comando fornece um dockerfile que constrói sua aplicação redwood js e prepara uma imagem de produção usando um runtime node js mínimo você pode iniciar o arquivo de composição de desenvolvimento com docker compose f /docker compose dev yml up abra http //localhost 8390 no seu navegador para verificar se seu aplicativo redwood js está funcionando corretamente implantando via back4app web deployment 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 login no back4app web deployment https //www back4app com/containers e siga estas etapas clique "criar novo app" e insira os detalhes do seu projeto selecione repositório github e autorize o back4app escolha seu repositório todo redwood selecione implantação dockerfile e verifique as configurações de build clique "implantar" para iniciar o processo de implantação após a implantação, use o painel do back4app para monitorar logs, gerenciar builds e configurar domínios personalizados, se necessário testando e depurando seu aplicativo uma vez implantado, certifique se de que seu aplicativo funcione como esperado conectividade da api use as ferramentas de desenvolvedor do navegador para verificar se as solicitações da api para adicionar, alternar e excluir tarefas são bem sucedidas persistência de dados adicione tarefas através da interface do usuário e atualize para confirmar que as tarefas persistem no banco de dados back4app operações crud teste a alternância e exclusão de tarefas enquanto verifica se há erros no console ou nos logs da api casos limite valide se as validações de entrada impedem envios vazios melhores práticas e dicas de otimização para uma aplicação segura e eficiente, considere o seguinte otimizar solicitações da api use processamento em lote e busque apenas os campos necessários variáveis de ambiente proteja credenciais sensíveis (id do aplicativo e chave javascript) usando variáveis de ambiente controle de acesso implemente acls dinâmicas para que apenas usuários autorizados possam modificar dados código em nuvem desloque lógica complexa para o código em nuvem do back4app para melhorar desempenho e segurança conclusão você agora construiu uma aplicação de lista de tarefas full stack usando redwood js integrada com um backend back4app este tutorial cobriu tudo, desde a inicialização do projeto e integração do backend até a implantação em contêineres à medida que você continua desenvolvendo, considere adicionar recursos como gerenciamento avançado de usuários, atualizações em tempo real e integrações de terceiros para mais informações, explore a documentação do back4app https //www back4app com/docs e recursos do redwood js