Tecnologias e compatibilidade
Nesta aula
Escolher para um problema definido
Stack é o conjunto de tecnologias usado para construir e executar um sistema. Na Oficina Caracol, JavaScript atende dois ambientes: navegador, que apresenta a interface, e Node, que executa servidor, leitura de arquivos e testes. A mesma linguagem não torna os ambientes iguais. O navegador não oferece automaticamente o acesso a arquivos e processos que o Node disponibiliza.
Compatibilidade é a capacidade das partes trabalharem juntas nas condições previstas: sintaxe aceita pelo runtime, APIs disponíveis, formato de dados compartilhado e comportamento nos navegadores escolhidos. Runtime é o programa que executa o código. Antes de discutir ferramentas adicionais, precisamos demonstrar que o caminho mínimo atende os requisitos.
Uma biblioteca pronta pode reduzir trabalho em outro projeto. Aqui, a decisão é usar somente APIs padrão para manter o percurso visível e não introduzir dependências externas. Essa restrição é pedagógica e contextual; não demonstra que bibliotecas são inadequadas em geral. A escolha deve ser revista se requisitos futuros ultrapassarem o que conseguimos manter de modo responsável.
Decisão arquitetural preenchida
ADR é um registro de decisão arquitetural: documenta contexto, escolha, alternativas e consequências. S08 descreve esse tipo de registro. O documento abaixo registra a arquitetura definida para o pacote; a aceitação de resultados de execução continua dependente das provas.
| Campo | ADR-CAT-01 |
|---|---|
| Contexto | Catálogo público e reserva simulada; dados fictícios; ensino de fluxo completo |
| Alternativa A | HTML estático: simples para conteúdo fixo, insuficiente sozinho para demonstrar a API de reservas |
| Alternativa B | JavaScript no navegador e Node com APIs padrão: atende ao escopo e mantém o percurso explícito |
| Alternativa C | Framework e serviços externos: possíveis, porém ampliam conceitos e dependências neste exercício |
| Decisão | Adotar alternativa B, sem banco externo nem dependências de terceiros |
| Consequências | Implementar e testar explicitamente HTTP, validação, seleção, estados da interface e simulação |
| Revisão | Reavaliar se houver persistência real, múltiplos processos ou requisitos fora do escopo |
Não escrevemos que B é mais rápida ou segura em termos absolutos. Esses comparativos exigiriam critérios e medições. A justificativa é sua adequação à aprendizagem e às capacidades definidas. Se um participante escolher outra solução como extensão, precisará demonstrar os mesmos requisitos e explicar os novos custos.
Prova pequena de compatibilidade
Uma prova técnica curta deve atacar uma incerteza antes de comprometer toda a solução. Para o pacote, o percurso relevante é iniciar o servidor Node, abrir a página no navegador, obter os casos públicos e apresentar estados explícitos. A prova não exige implementar um produto inteiro; exige um resultado que permita aceitar ou revisar a decisão.
Diretório: pratica
Identificar runtime: node --version
Verificar o pacote: npm test
Executar validação: npm run validate
Iniciar percurso integrado: npm start
Endereço local: http://127.0.0.1:3000
Registrar: versão real, navegador, resultado e limitesO número da versão deve vir do ambiente executado, sem copiar uma versão presumida do livro. O teste do Node não substitui a inspeção no navegador: as APIs e as fronteiras são distintas. A prova precisa registrar falhas e diferenças, inclusive uma API não disponível ou um comportamento de interface inadequado.
| Fronteira | O que conferir |
|---|---|
| Node e arquivos | Leitura e validação dos dados no caminho previsto |
| Servidor e navegador | Resposta HTTP com somente campos públicos e estados de falha explícitos |
| Navegador e pessoa | Conteúdo, foco, teclado e feedback previstos no escopo |
Procedimento e erros
- Liste requisitos e restrições antes de escolher nomes de ferramentas.
- Compare alternativas com o mesmo critério e registre as consequências.
- Verifique a incerteza mais importante com uma prova pequena e identificável.
- Registre o ambiente realmente testado e a condição de revisão da escolha.
| Erro | Reparo |
|---|---|
| Escolher pela popularidade sem requisito | Relacionar necessidade, custo e prova de adequação |
| Confundir Node com navegador | Testar cada ambiente e sua fronteira específica |
| Declarar compatibilidade apenas porque instalou | Executar o percurso e observar resultados |
| Fixar versão sem conferir APIs usadas | Comparar disponibilidade e comportamento no runtime escolhido |
Exercício resolvido e gate
Dados: a interface abre corretamente, mas o servidor não inicia no runtime de um colega. Ele propõe adicionar uma biblioteca de interface. Qual investigação corresponde ao problema?
Ver solução comentada
Solução: registrar versão do Node, comando, diretório e mensagem de falha; verificar as APIs e a sintaxe do servidor no ambiente escolhido. Uma biblioteca visual não trata essa fronteira. Se a versão é incompatível, alinhar o ambiente suportado e repetir a prova; se o caminho está errado, corrigir a execução e a documentação.
- Rubrica: localizar a fronteira, recolher evidência reproduzível e evitar uma mudança sem relação com a causa.
- Gate: a decisão está documentada, o ambiente testado é identificável e a prova mínima atende aos critérios; diferenças conhecidas têm consequência e não são escondidas em uma declaração genérica de compatibilidade.
Leitura relacionada
Consultar S18, guia de JavaScript, e S19, documentação de módulos, HTTP, sistema de arquivos e test runner do Node. A disponibilidade de cada API deve ser conferida na documentação da versão realmente adotada.
Fontes relacionadas
Consulte os limites e as seções de apoio de cada referência.
S08 S18 S19Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.
A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.