Manual técnico · séries de tutoriais com demo executável
Cada tutorial desta planta é uma prancha de desenho técnico: especificação à esquerda, teste de bancada executável à direita. Edite o código, aperte RUN e veja o comportamento ao vivo — sem sair da página.
Ordenar não é mágica: é trocar vizinhos até sobrar nada. O bubble sort compara pares, troca quando estão fora de ordem e "flutua" o maior para o fim a cada passada. Edite o código e veja cada comparação e cada troca acontecer na bancada.
O ctx é a interface da bancada: step(A, cfg) desenha um quadro (cmp = índices comparados em âmbar), tail(k) fixa as k últimas posições em verde, done() valida e aprova o teste. Tente: troque os números do array, ou troque o < por > e veja a ordem inverter.
JavaScript não espera ninguém — a menos que você peça. async/await serializa assíncronos: cada await pausa a função até a promessa resolver, sem travar a thread. A fila abaixo roda tarefas em sequência; troque por Promise.all e veja virarem paralelas.
A interface expõe add(nome, ms) (cria a barra), wait(ms) (simula latência com animação de progresso), ok(nome) e parallel(lista). Tente: mude os milissegundos, adicione uma tarefa, ou remova o laço e chame as funções uma a uma.
Cada tecla dispara um evento — e chamar a API a cada tecla afunda o servidor. Debounce espera a pausa e dispara uma vez no fim; throttle limita a no máximo 1 por intervalo. Digite na bancada e veja a diferença nos contadores ao vivo.
Debounce é para "quando parar de digitar" (busca, autosave). Throttle é para "no máximo a cada X" (scroll, resize, cliques). Na prática, autocomplete usa debounce; contador de scroll usa throttle. Tente: aplique 100ms e 2000ms e compare.
Animação boa não é velocidade — é ritmo. A curva cubic-bezier decide se o movimento acelera, desacelera, ou dá aquele "estilingue" que o olho adora. Gire os controles, dispare o bloco e copie o CSS gerado.
A regra CSS exata do movimento que você configurou — pronta para colar no seu projeto. O bloco percorre a pista e volta ao ponto inicial a cada disparo (a volta usa a mesma curva).
Anime transform e opacity (GPU), nunca left/top/width — evita reflow e mantém 60fps. Foi o que fizemos: só translateX.