Quickstarters
Como Construir um Frontend Sveltekit e Conectá-lo a um Backend?
34 min
neste tutorial, você construirá um aplicativo de lista de tarefas usando sveltekit 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 usando sveltekit ao final deste tutorial, seu aplicativo interagirá perfeitamente com um backend que gerencia armazenamento de dados, autenticação e muito mais desenvolver um aplicativo full stack pode ser complexo devido à configuração do backend e gerenciamento de banco de dados para simplificar seu fluxo de trabalho, usamos o back4app—um robusto backend como serviço—para que você possa se concentrar em criar um frontend sveltekit excepcional o back4app fornece um banco de dados nosql totalmente gerenciado, autenticação, cloud code para lógica personalizada e sdks para uma integração suave 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 moderno sveltekit usando vite integrar 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 em contêiner no back4app pré requisitos antes de começar, certifique se de que você tem node js e npm instalados em sua máquina verifique executando node v e npm v conhecimento básico de sveltekit , incluindo roteamento, funções de carregamento e variáveis reativas 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 ordem, 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 sveltekit certifique se de que você tem node js (versão lts) instalado se não, baixe o de nodejs org https //nodejs org/ crie seu projeto sveltekit executando npx sv create todo app quando solicitado, escolha as opções do sveltekit que melhor se adequam ao seu projeto (por exemplo, projeto esqueleto, typescript se desejado) navegue até o diretório do seu projeto cd todo app inicie o servidor de desenvolvimento para verificar a configuração npm run dev seu aplicativo sveltekit deve agora abrir no seu navegador com o frontend pronto, prossiga para criar seu backend no back4app criando o backend todo back4app oferece um serviço de backend totalmente gerenciado alimentado por parse inclui 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 em "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 em "criar uma classe" , e escolha "personalizado" nomeie a classe tarefa e configure a para leitura e escrita públicas (você pode refinar essas permissõ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 concluída (boolean) – status de conclusão da tarefa datadevencimento (data) – o prazo para a tarefa clique em "salvar" para criar o esquema integrando back4app com sveltekit você usará o parse javascript sdk para conectar seu app sveltekit ao backend do back4app instale o sdk do parse npm install parse configure o sdk editando o src/app html ou criando um módulo dedicado (por exemplo, src/lib/parseclient js ) por exemplo, crie src/lib/parseclient js com o seguinte 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 este módulo em suas rotas ou componentes sveltekit para interagir com o back4app desenvolvendo o frontend sua aplicação sveltekit consistirá em rotas e componentes para adicionar, exibir, atualizar e excluir tarefas aproveite o roteamento baseado em arquivos do sveltekit e variáveis reativas para atualizações dinâmicas estruturando seus componentes crie uma src/lib/components pasta para organizar seus componentes mkdir p src/lib/components você criará os seguintes componentes taskform svelte – para adicionar novas tarefas tasklist svelte – para exibir a lista de tarefas taskitem svelte – para representar tarefas individuais taskform svelte este componente renderiza um formulário que captura os detalhes da tarefa e os envia para o back4app \<script> import { createeventdispatcher } from 'svelte'; import parse from '$lib/parseclient'; let title = ''; let description = ''; const dispatch = createeventdispatcher(); async function handlesubmit(event) { event 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(); dispatch('refresh'); title = ''; description = ''; } catch (error) { console error('error adding task ', error); } } \</script> \<form on\ submit|preventdefault={handlesubmit}> \<input type="text" placeholder="task title" bind\ value={title} required /> \<input type="text" placeholder="description" bind\ value={description} required /> \<button type="submit">add task\</button> \</form> taskitem svelte este componente representa uma tarefa individual, com botões para alternar seu status de conclusão ou excluir a tarefa \<script> import parse from '$lib/parseclient'; export let task; export let refresh; async function togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(task id); tasktoupdate set('completed', !task completed); await tasktoupdate save(); refresh(); } catch (error) { console error('error updating task ', error); } } async function deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(task id); await tasktodelete destroy(); refresh(); } catch (error) { console error('error deleting task ', error); } } \</script> \<div class="task item {task completed ? 'completed' ''}"> \<div> \<h3>{task title}\</h3> \<p>{task description}\</p> \</div> \<div> \<button on\ click={togglecomplete}> {task completed ? 'undo' 'complete'} \</button> \<button on\ click={deletetask}>delete\</button> \</div> \</div> tasklist svelte este componente exibe todas as tarefas iterando sobre um array e renderizando cada tarefa usando o componente taskitem \<script> import taskitem from '$lib/components/taskitem svelte'; export let tasks = \[]; export let refresh; \</script> {#if tasks length === 0} \<p>no tasks available\</p> {\ else} {#each tasks as task (task id)} \<taskitem {task} {refresh} /> {/each} {/if} +page svelte (rota principal) na sua rota principal do sveltekit (por exemplo, src/routes/+page svelte ), gerencie o estado das tarefas e integre os componentes \<script> import { onmount } from 'svelte'; import parse from '$lib/parseclient'; import taskform from '$lib/components/taskform svelte'; import tasklist from '$lib/components/tasklist svelte'; let tasks = \[]; async function fetchtasks() { try { const task = parse object extend('task'); const query = new parse query(task); const results = await query find(); tasks = results map(task => ({ id task id, task tojson() })); } catch (error) { console error('error fetching tasks ', error); } } onmount(fetchtasks); \</script> \<div class="container"> \<h1>to do list\</h1> \<taskform on\ refresh={fetchtasks} /> \<tasklist {tasks} refresh={fetchtasks} /> \</div> estilizando a aplicação crie uma folha de estilo global (por exemplo, src/app css ) 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 esta folha de estilo no seu src/app html ou arquivo de layout principal implantando o frontend na implantação web do back4app a implantação web do back4app fornece um ambiente containerizado para hospedar sua aplicação sveltekit configurando o vite para produção atualize seu vite config js se necessário para definir o caminho base para um ambiente containerizado import { sveltekit } from '@sveltejs/kit/vite'; import { defineconfig } from 'vite'; export default defineconfig({ plugins \[sveltekit()], base ' /', }); gere a build de produção npm run build criando um dockerfile antes que você possa testar seu contêiner docker localmente, você precisa instalar adapter node que constrói seu site para node js para fazer isso, execute o comando no seu terminal npm i d @sveltejs/adapter node após instalar o adapter node , abra o svelte config js arquivo e substitua o código lá pelo bloco de código abaixo import adapter from '@sveltejs/adapter node'; / @type {import('@sveltejs/kit') config} / const config = { 	kit { 	 // adapter auto only supports some environments, see https //svelte dev/docs/kit/adapter auto for a list 	 // if your environment is not supported, or you settled on a specific environment, switch out the adapter 	 // see https //svelte dev/docs/kit/adapters for more information about adapters 	 adapter adapter() 	} }; export default config; agora, crie um dockerfile na raiz do seu projeto com o seguinte conteúdo from node 22 alpine as builder workdir /app copy package json / run npm ci copy run npm run build run npm prune production from node 22 alpine workdir /app copy from=builder /app/build build/ copy from=builder /app/node modules node modules/ copy package json expose 3000 env node env=production cmd \[ "node", "build" ] testando o contêiner docker localmente construa sua imagem docker docker build t todo frontend execute o contêiner docker run p 3000 3000 todo frontend abra http //localhost 3000 no seu navegador para verificar se seu aplicativo sveltekit 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 main faça login no back4app web deployment https //www back4app com/containers clique "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 "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 que seu frontend sveltekit se comunica corretamente com o backend back4app verificação da api use as ferramentas de desenvolvedor do seu navegador (f12 → rede) para inspecionar chamadas de 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 enviar tarefas vazias teste de desempenho simule condições de rede lentas usando ferramentas do navegador para avaliar a capacidade de resposta melhores práticas para usar back4app com sveltekit para otimizar seu aplicativo requisições eficientes use operações em lote ao 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 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())); descarregamento de backend aproveite o cloud code para lógica complexa e reduza a exposição da api conclusão você agora construiu uma aplicação de lista de tarefas full stack criando um frontend sveltekit, 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 suave entre sua interface sveltekit 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