# Construindo um App Bancário Parte 1: Templates HTML e Rotas em um Aplicativo Web Quando o computador de orientação da Apollo 11 navegou até a Lua em 1969, ele precisou alternar entre diferentes programas sem reiniciar todo o sistema. Os aplicativos web modernos funcionam de forma semelhante – eles mudam o que você vê sem recarregar tudo do zero. Isso cria a experiência suave e responsiva que os usuários esperam hoje. Ao contrário dos sites tradicionais que recarregam páginas inteiras para cada interação, os aplicativos web modernos atualizam apenas as partes que precisam ser alteradas. Essa abordagem, muito parecida com a forma como o controle da missão alterna entre diferentes telas enquanto mantém a comunicação constante, cria a experiência fluida que esperamos. Aqui está o que torna a diferença tão dramática: | Aplicativos Tradicionais de Múltiplas Páginas | Aplicativos Modernos de Página Única | |-----------------------------------------------|-------------------------------------| | **Navegação** | Recarregamento completo da página para cada tela | Troca instantânea de conteúdo | | **Desempenho** | Mais lento devido ao download completo de HTML | Mais rápido com atualizações parciais | | **Experiência do Usuário** | Trocas bruscas de página | Transições suaves, estilo aplicativo | | **Compartilhamento de Dados** | Difícil entre páginas | Gerenciamento de estado facilitado | | **Desenvolvimento** | Vários arquivos HTML para manter | Um único HTML com templates dinâmicos | **Entendendo a evolução:** - **Aplicativos tradicionais** exigem solicitações ao servidor para cada ação de navegação - **SPAs modernos** carregam uma vez e atualizam o conteúdo dinamicamente usando JavaScript - **Expectativas dos usuários** agora favorecem interações instantâneas e contínuas - **Benefícios de desempenho** incluem redução de largura de banda e respostas mais rápidas Nesta lição, vamos construir um aplicativo bancário com várias telas que fluem perfeitamente. Assim como os cientistas usam instrumentos modulares que podem ser reconfigurados para diferentes experimentos, usaremos templates HTML como componentes reutilizáveis que podem ser exibidos conforme necessário. Você trabalhará com templates HTML (modelos reutilizáveis para diferentes telas), roteamento em JavaScript (o sistema que alterna entre telas) e a API de histórico do navegador (que mantém o botão de voltar funcionando como esperado). Estas são as mesmas técnicas fundamentais usadas por frameworks como React, Vue e Angular. Ao final, você terá um aplicativo bancário funcional que demonstra os princípios profissionais de um aplicativo de página única. ## Quiz Pré-Aula [Quiz pré-aula](https://ff-quizzes.netlify.app/web/quiz/41) ### O que Você Vai Precisar Precisaremos de um servidor web local para testar nosso aplicativo bancário – não se preocupe, é mais fácil do que parece! Se você ainda não tiver um configurado, basta instalar [Node.js](https://nodejs.org) e executar `npx lite-server` na pasta do seu projeto. Este comando prático inicia um servidor local e abre automaticamente seu aplicativo no navegador. ### Preparação No seu computador, crie uma pasta chamada `bank` com um arquivo chamado `index.html` dentro dela. Vamos começar com este [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code) HTML: ```html Bank App ``` **O que este boilerplate fornece:** - **Estabelece** a estrutura do documento HTML5 com a declaração DOCTYPE adequada - **Configura** a codificação de caracteres como UTF-8 para suporte a texto internacional - **Habilita** design responsivo com a tag meta viewport para compatibilidade com dispositivos móveis - **Define** um título descritivo que aparece na aba do navegador - **Cria** uma seção de corpo limpa onde construiremos nosso aplicativo > 📁 **Prévia da Estrutura do Projeto** > > **Ao final desta lição, seu projeto conterá:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Responsabilidades dos arquivos:** > - **index.html**: Contém todos os templates e fornece a estrutura do aplicativo > - **app.js**: Gerencia o roteamento, navegação e gerenciamento de templates > - **Templates**: Definem a interface para login, painel e outras telas --- ## Templates HTML Templates resolvem um problema fundamental no desenvolvimento web. Quando Gutenberg inventou a impressão com tipos móveis na década de 1440, ele percebeu que, em vez de esculpir páginas inteiras, poderia criar blocos de letras reutilizáveis e organizá-los conforme necessário. Os templates HTML funcionam com o mesmo princípio – em vez de criar arquivos HTML separados para cada tela, você define estruturas reutilizáveis que podem ser exibidas conforme necessário. Pense nos templates como projetos para diferentes partes do seu aplicativo. Assim como um arquiteto cria um projeto e o utiliza várias vezes em vez de redesenhar salas idênticas, criamos templates uma vez e os instanciamos conforme necessário. O navegador mantém esses templates ocultos até que o JavaScript os ative. Se você quiser criar várias telas para uma página da web, uma solução seria criar um arquivo HTML para cada tela que deseja exibir. No entanto, essa solução traz algumas inconveniências: - Você precisa recarregar todo o HTML ao alternar de tela, o que pode ser lento. - É difícil compartilhar dados entre as diferentes telas. Outra abordagem é ter apenas um arquivo HTML e definir vários [templates HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) usando o elemento `