Projeto final: um quadro de disponibilidade de eventos
Conecte dados, uma requisição assíncrona, atualizações do DOM e um feedback acessível.
- Explicar as responsabilidades do HTML, do CSS, do JavaScript do navegador e do JavaScript do servidor
- Renderizar um resultado assíncrono com segurança
- Tratar os estados de disponível e indisponível
Imagine um espaço de eventos anunciando vagas em oficinas. O HTML dá à página um título, um botão e um elemento de status. O CSS facilita enxergar a disponibilidade. O JavaScript do navegador pede a contagem mais recente e atualiza o DOM. Uma API em Node.js poderia ler o estoque de vagas e devolver JSON. Neste projeto final, você constrói a decisão do navegador com uma Promise simulada, então não precisa de servidor nem de conta.
1<h1>Workshop seats</h1>
2<button id="refresh" type="button">Refresh availability</button>
3<p id="availability" role="status">Choose refresh to check seats.</p>
4<script src="board.js" defer></script>.open { color: #126245; }
.full { color: #9b2727; }
#availability { font-weight: 700; }1const status = document.querySelector("#availability");
2document.querySelector("#refresh").addEventListener("click", async () => {
3 status.textContent = "Checking…";
4 try {
5 const response = await fetch("/api/seats");
6 if (!response.ok) throw new Error("HTTP " + response.status);
7 const data = await response.json();
8 status.textContent = data.seats > 0 ? data.seats + " seats open" : "Fully booked";
9 status.classList.toggle("open", data.seats > 0);
10 status.classList.toggle("full", data.seats === 0);
11 } catch { status.textContent = "Could not check seats. Try again."; }
12});Experimente
Até 15 XPAcompanhe a pilha completa
Siga a requisição do navegador até um servidor Node e de volta. Preveja que lado controla a mensagem visível.
Equipes reais usam esse padrão para disponibilidade de estoque, status de pedidos, horários de agendamento e painéis. Antes de lançar, teste os casos de zero, de valor positivo e de falha. Verifique a página com teclado e com leitor de tela; uma mensagem de status deve ser anunciada sem tirar o foco do botão.
Principais conclusões
Mantenha claras as responsabilidades de estrutura, estilo, comportamento no navegador e dados no servidor.
Renderize o estado visível ao usuário com textContent e classes CSS.
Teste os resultados de zero, de valor positivo e de falha, não só o caminho feliz.
Quiz da aula
4 perguntas · aprovação com 3 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em JavaScript
Escreva o programa, execute-o com os casos de teste e use o retorno para desenvolver suas habilidades em JavaScript.
Renderize todos os estados de disponibilidade
O código inicial cria um parágrafo de status na página isolada do exercício. A entrada é ok,N ou error,N. Aguarde a requisição simulada com await. Em caso de sucesso, coloque no parágrafo N seats open se N for positivo, ou Fully booked se for zero; em caso de erro, coloque Could not check seats. Imprima o textContent dele.
- Vagas abertas
- Lotado
- A requisição falhou
O JavaScript roda em um frame isolado do navegador, com limite de 1,5 segundo. A entrada fica disponível na variável de string input.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…