MÓDULO 1.4

⚛️ Frameworks modernos

Integre WebMCP a SPA, React, Angular e Next.js com registro e cleanup previsíveis.

6

Tópicos

3h

Carga

Integrator

Nível

Implementação

Tipo

0 de 60%
1

Use JavaScript puro como referência

O que é: Uma implementação sem framework explicita registro, dependências e cleanup.

Por que aprender: A referência reduz magia e ajuda a diagnosticar problemas escondidos por hooks ou injeção de dependência.

Componente monta estado de partida Tools registradas decisão observável Cleanup resultado verificável

Antes de modelar

Escreva o pedido da pessoa, o estado atual e a evidência que provará conclusão.

Erro de partida

Começar pelo nome de uma função ou por um botão produz uma tool sem objetivo humano claro.

Preveja antes de abrir o código

Qual informação muda a decisão? Qual efeito precisa aparecer na interface? Responda antes de implementar.

const lifecycle = new AbortController();
registerTools(modelContext, services, lifecycle.signal);
Indo mais fundo: evidência que vale guardar

Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.

Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.

Conceitos-chave

01

função pura

02

registro explícito

03

AbortController

04

baseline

2

Modele um hook React idempotente

O que é: O efeito registra tools para o estado atual e o cleanup aborta os registros anteriores.

Por que aprender: Strict Mode, rerenders e mudanças de dependência não podem duplicar nomes no catálogo.

PerguntaContrato forteContrato fraco
Quando usar?A descrição nomeia intenção e contexto.“Faz coisas” ou “gerencia”.
O que recebe?Somente dados necessários.Objeto genérico e ilimitado.
O que devolve?Estado e próxima ação verificáveis.Texto sem protocolo.
Como falha?Código, motivo e recuperação.Exceção opaca.

Faça

  • ✓ Use verbos específicos.
  • ✓ Delimite entradas.
  • ✓ Declare a evidência.

Evite

  • ✗ Misturar intenções.
  • ✗ Aceitar qualquer objeto.
  • ✗ Esconder efeitos.
useEffect(() => {
  const controller = new AbortController();
  registerTools({ courseId, signal: controller.signal });
  return () => controller.abort();
}, [courseId]);
Indo mais fundo: evidência que vale guardar

Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.

Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.

Conceitos-chave

01

useEffect

02

dependências

03

cleanup

04

Strict Mode

3

Encapsule em serviço Angular

O que é: Um serviço recebe dependências, registra as tools e expõe cleanup ao componente ou rota.

Por que aprender: A injeção de dependência mantém regras testáveis e separadas do ciclo visual.

1

Observe

Capture estado, entrada e contexto antes da ação.

2

Decida

Valide pré-condições e escolha a transição permitida.

3

Execute

Aplique a regra compartilhada e respeite cancelamento.

4

Prove

Atualize a interface e devolva resultado estruturado.

Ponto de controle

Se a etapa 2 reprovar, a tool não tenta “dar um jeito”: ela devolve uma recuperação explícita.

ngOnDestroy() {
  this.webMcpRegistration.abort();
}
Indo mais fundo: evidência que vale guardar

Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.

Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.

Conceitos-chave

01

service

02

DI

03

OnDestroy

04

testabilidade

4

Respeite cliente e servidor no Next.js

O que é: document.modelContext só existe no cliente e depois que o documento está ativo.

Por que aprender: Separar componente cliente, carregamento e API do servidor evita acesso ao Document durante SSR.

CÓDIGO DE REFERÊNCIA

"use client";
useEffect(() => registerPageTools(), []);
Entrada

É pequena, descrita e validável.

Execução

Reutiliza a regra real da aplicação.

Saída

Permite verificar efeito e continuar.

Leia o código como contrato

Sublinhe onde a entrada é validada, onde o efeito acontece, onde o cancelamento chega e onde a UI é atualizada.

Indo mais fundo: evidência que vale guardar

Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.

Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.

Conceitos-chave

01

use client

02

hydration

03

SSR

04

API route

5

Atualize tools ao trocar de rota

O que é: SPAs precisam retirar ferramentas da rota anterior e registrar apenas as capacidades da nova tela.

Por que aprender: Catálogo obsoleto é stale UI: o agente vê uma ação que a pessoa já não pode executar.

Falha provocada

Execute o cenário com estado ausente, entrada inválida ou capacidade indisponível.

Recuperação esperada

A resposta informa o que falhou, o que permanece seguro e qual ação pode continuar.

Matriz mínima de teste

✓ caminho feliz reproduzível

✓ entrada inválida acionável

✓ cancelamento encerra trabalho

✓ fallback preserva a jornada

✓ interface reflete o estado

✓ backend mantém autorização

routeController.abort("route changed");
routeController = new AbortController();
Indo mais fundo: evidência que vale guardar

Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.

Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.

Conceitos-chave

01

router

02

unmount

03

catálogo atual

04

transição

6

Compare implementações com a mesma prova

O que é: Frameworks diferentes devem cumprir o mesmo contrato observável de registro, execução, UI e cleanup.

Por que aprender: Uma matriz comum separa diferenças de ergonomia de diferenças reais de comportamento.

Exercício de síntese

  1. 1. Explique o problema sem usar o nome da tecnologia.
  2. 2. Desenhe o estado anterior e posterior.
  3. 3. Implemente a menor prova funcional.
  4. 4. Provoque uma falha e registre a recuperação.
  5. 5. Entregue código, evidência e uma limitação conhecida.

Desafio do módulo

Implementar o mesmo catálogo em JavaScript puro e em um framework, demonstrando montagem, atualização e desmontagem.

Critério de Integrator responsável

A entrega precisa funcionar, explicar seus limites e preservar o caminho humano quando a capacidade experimental não existir.

| Implementação | registra 1x | atualiza UI | aborta | fallback |
| Vanilla       | sim         | sim        | sim    | sim      |
| React         | sim         | sim        | sim    | sim      |
Indo mais fundo: evidência que vale guardar

Registre a entrada, o estado anterior, a decisão tomada, o resultado e a alteração visível da página.

Inclua também uma falha provocada e o comportamento observado sem suporte WebMCP.

Conceitos-chave

01

mesmo contrato

02

mesmos testes

03

cleanup provado

04

compatibilidade

📦 Entrega do módulo

Implementar o mesmo catálogo em JavaScript puro e em um framework, demonstrando montagem, atualização e desmontagem.

Critério de aceite

A entrega funciona com suporte WebMCP e mantém o caminho manual quando a API não existe.

Evidência

Inclua código, cenário testado, resultado observado e uma limitação conhecida.

Fontes técnicas