🎞️ Slides 📝 Material ← Módulo
Módulo 2 · Ciclo Comum · IN02 Plano de Ensino

Aula 10 — Front-End III · CSS e JavaScript avançado

Plano operacional do dia: fechar o bloco de front com nível profissional sem framework — CSS Variables, Grid, BEM, ESM, localStorage e FormData.

← Voltar ao Módulo

Identificação

Disciplina
IN02 · Desenvolvimento Web
Módulo
2 — Ciclo Comum
Aula
10 de 11
Carga horária do dia
6h (2h + 2h + 2h)
Modalidade
Presencial · Metodologia ativa
Pré-aula
Autoestudo guiado

Resumo

A aula 10 fecha o bloco de front-end. CSS moderno entra em escala: CSS Variables com tematização (claro/escuro), Flexbox e Grid para layout, mobile-first com clamp(), transitions performáticas animando apenas transform e opacity. A organização ganha BEM (.card__title, .card--featured) — convenções que tornam o CSS legível por toda a equipe.

No JS, salto de nível: ES Modules nativos no browser (<script type="module">), destructuring/spread/rest, optional chaining, classes ES, closures, persistência com localStorage, envio de forms com FormData + fetch() e delegação de eventos. Tudo aplicado ao projeto integrador.

Objetivos de aprendizagem

  • OA-1Aplicar CSS Variables com escopo dinâmico (tematização claro/escuro via atributo data-theme).
  • OA-2Compor layouts com Flexbox e Grid responsivos seguindo a abordagem mobile-first.
  • OA-3Estruturar CSS com BEM em componentes reutilizáveis (block__element--modifier).
  • OA-4Usar ES Modules nativos no browser (<script type="module">, import/export).
  • OA-5Manipular dados com destructuring/spread, classes ES e closures.
  • OA-6Persistir preferências do usuário com localStorage e enviar formulários via FormData + fetch().

Pré-requisitos

  • Aula 7 concluída: SSR com EJS, partials e DOM funcionando no projeto.
  • Aula 8 concluída: pelo menos 1 interação dinâmica com fetch() + estados loading/empty/error.
  • Aula 9 concluída: suite de testes por camada e workflow de CI verdes — a refatoração visual de hoje não pode quebrá-los.
  • Repositório com public/css/ e public/js/ servidos por express.static.

Cronograma do dia

📚 Bloco 1 · Autoestudo

08h00 — 10h00

Estudo individual orientado pelo material da aula 10.

  • Leitura completa do Material da Aula 10 (CSS Variables, Grid/Flex, BEM, ESM, localStorage, FormData).
  • Identificar 5 componentes visuais reaproveitáveis no projeto (ex.: card, badge, botão, modal, navbar) e nomeá-los em BEM.
  • Mapear os breakpoints que o projeto vai suportar (mobile, tablet, desktop) e quais ajustes cada um exige.
  • Caderno de bordo: anotar 1 dúvida sobre BEM e 1 sobre ESM.

🎓 Bloco 2 · Instrução PE — Aula em metodologia ativa

10h00 — 12h00

Encontro síncrono com o professor especialista. 15 minutos de daily seguidos de 1h45 de aula em live-coding.

  • 10h00 — 10h15 · Daily: os 5 componentes e os breakpoints trazidos do autoestudo.
  • 10h15 — 12h00 · CSS Variables + tematização, Grid/Flex, mobile-first, transitions, BEM, ESM, classes ES, localStorage e FormData.

🍴 Intervalo · Almoço

12h00 — 14h00

Janela livre.

🛠️ Bloco 3 · Desenvolvimento do projeto

14h00 — 16h00

Janela de trabalho da equipe sobre o projeto integrador.

  • Refatorar o CSS principal para usar CSS Variables + BEM + Grid em pelo menos 1 página.
  • Adicionar tema escuro com toggle visível na navbar; persistir a preferência via localStorage.
  • Reorganizar os scripts client-side em ES Modules com <script type="module">.
  • Abrir Merge Request feat(ui): design system + tema escuro com print/gif do toggle até as 16h00.

Detalhamento da instrução PE (10h00 — 12h00)

10h00
10h15

DailyDaily de abertura

Cada aluno apresenta, em 1 minuto, um dos 5 componentes mapeados e como ele será nomeado em BEM (ex.: .card, .card__title, .card--featured).

10h15
10h30

CodingCSS Variables + tematização

Live-coding: declarar variáveis no :root e sobrescrever em [data-theme="dark"]. Toggle no JS troca o atributo no <html> e o tema responde inteiro de uma vez.

10h30
10h50

CodingGrid 12 colunas + Flexbox em nav

Pair programming: construir um layout principal com Grid de 12 colunas (template-areas) e a navbar interna com Flexbox. Discussão sobre quando preferir um ou outro.

10h50
11h05

TalkMobile-first + clamp()

Por que começar pelo menor breakpoint e adicionar media queries só para cima. Demo de tipografia fluida com clamp(): tamanho cresce suave entre mobile e desktop sem múltiplas media queries.

11h05
11h20

CodingTransitions performáticas

Por que animar transform e opacity em vez de top/width (compositor da GPU vs reflow). Live-coding de um hover com transição suave e medição no DevTools (Performance).

11h20
11h35

AtivaBEM aplicado a componente real

Em duplas: pegar um componente desorganizado do projeto e refatorar para BEM (.card, .card__title, .card--featured). Code review cruzado entre 2 duplas.

11h35
11h50

CodingESM + classes + localStorage + FormData

Live-coding rápido: <script type="module">, import/export, classe ThemeManager com localStorage, e envio de form via FormData + fetch() reutilizando o endpoint dual da aula 8.

11h50
12h00

AtivaSíntese

Debate-relâmpago: "BEM vs utility-first". Cada aluno escreve 1 frase de fechamento e o professor anuncia que a aula 11 fecha o módulo mergulhando na infraestrutura de redes.

Estratégias de metodologia ativa

  • Redesign coletivo de um componente — turma escolhe um componente desalinhado do próprio projeto e o reconstrói em BEM + Variables + Grid em quadro/editor compartilhado.
  • Code review cruzado de BEM — duplas trocam o CSS refatorado e marcam violações de nomenclatura antes do professor revisar; aprendizagem por leitura.
  • Debate "BEM vs utility-first" — discussão guiada com argumentos de ambos os lados antes de o professor sintetizar quando cada abordagem cabe melhor.

Recursos e ferramentas

CategoriaRecursoUso
Slidesslides/slide-lesson-10.htmlExposição na instrução PE
Materialmaterials/lesson-10-material.htmlAutoestudo
BrowserDevTools — abas Computed e LayoutInspeção de cascata, grid e responsividade
Repositóriopublic/css/Variables, BEM, Grid, transitions
Repositóriopublic/js/ESM, classes, localStorage, FormData
Backendsrc/controllers/ + src/services/Endpoint dual da aula 8 reusado para FormData

Verificação de aprendizagem

  • CR-1CSS Variables aplicadas com tema escuro funcional via toggle visível na navbar.
  • CR-2Layout principal usando Grid + Flexbox responsivo seguindo abordagem mobile-first.
  • CR-3Pelo menos 1 componente refatorado em padrão BEM (block__element--modifier).
  • CR-4ESM no browser em uso (<script type="module"> + import/export entre arquivos).
  • CR-5Merge Request feat(ui): design system + tema escuro aberto até as 16h00, com preferência de tema persistida via localStorage.
Critério mínimo

Aluno que sair às 16h sem tema escuro persistido ou sem ao menos 1 componente em BEM está em débito técnico para o fechamento do módulo — e a suite de testes da aula 9 deve continuar verde após a refatoração visual.

Conexão com a aula 11

Toda a stack está pronta e protegida: banco, back TypeScript em 6 camadas, SSR com EJS, fetch, testes com CI verde e front profissional. A aula 11 fecha o módulo olhando para baixo da nossa stack: a infraestrutura de redes — TCP/IP, DNS, HTTPS+TLS, CDN, cache HTTP e padrões de tolerância a falhas — que sustenta tudo em produção.

  • Os assets do design system criado hoje (CSS, JS, imagens) são os primeiros candidatos a cache e CDN na próxima aula.
  • O tema persistido em localStorage funciona sem rede — separar o que depende de fetch() do que não depende prepara a discussão de resiliência.
Para o autoestudo da aula 11

Antes das 8h do próximo dia: rodar dig no domínio do projeto, ler o material da aula 11 e mapear quais respostas do back-end fazem sentido cachear (e por quanto tempo).

Inteli Logo