Conclusão
Nesse capítulo, construímos uma página web que busca dados da API e os renderiza com HTML, CSS e JavaScript puros. Os 12 eventos do TamoJunto saíram do banco de dados, passaram pelo backend e chegaram na tela do navegador. Ao mesmo tempo, sentimos a fricção da manipulação direta do DOM: manter múltiplas partes da interface em sincronia com o mesmo dado é trabalhoso e frágil. Componentes resolvem exatamente esse problema.
Exercícios
-
Adicione uma barra de busca (
<input>) no topo da página. Quando o usuário digita, filtre os cards para mostrar apenas eventos cujo título contém o texto digitado. Use o evento"input"no<input>e a propriedadestyle.displaypara esconder/mostrar os cards. -
Modifique o card para exibir a data do evento formatada de duas formas: data completa (ex: “segunda-feira, 15 de setembro de 2026”) e apenas o horário (ex: “08:00”). Consulte as opções de
toLocaleStringna MDN. -
Adicione um estado “loading” à página: antes do
fetchretornar, mostre o texto “Carregando eventos…” dentro do contêiner. Quando os dados chegarem, substitua pelo conteúdo real. Dica: usecontainer.textContentpara limpar e depoisappendChildpara popular. -
Trate erros no
fetch: se a requisição falhar (servidor fora do ar, rede sem conexão), mostre uma mensagem de erro no lugar da lista. Usetry/catchao redor dofetcheresponse.okpara checar se a resposta é 2xx. -
Implemente o botão RSVP como um toggle: o primeiro clique marca como “Confirmado ✓” (verde), o segundo clique desmarca (volta ao estado original). Use
classList.togglepara alternar uma classe CSS. -
Adicione ordenação à lista: dois botões no topo (“Por data” e “Por capacidade”) que reordenam os cards. Você pode reordenar o array de eventos e re-renderizar a lista do zero, ou manipular a ordem dos elementos existentes no DOM. Tente as duas abordagens e compare.
Referências
A MDN Web Docs é a referência definitiva para HTML, CSS e JavaScript no navegador. Os guias de aprendizado são um bom ponto de partida: