You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/pt-PT/7-bank-project/1-template-route/assignment.md

51 lines
4.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Melhorar o Roteamento
## Instruções
Agora que construiu um sistema de roteamento básico, é hora de aprimorá-lo com funcionalidades profissionais que melhoram a experiência do utilizador e fornecem melhores ferramentas para o programador. As aplicações do mundo real precisam de mais do que apenas mudar templates requerem títulos de página dinâmicos, hooks de ciclo de vida e arquiteturas extensíveis.
Nesta tarefa, irá estender a sua implementação de roteamento com duas funcionalidades essenciais que são comuns em aplicações web de produção. Estas melhorias tornarão a sua app bancária mais refinada e fornecerão uma base para funcionalidades futuras.
A declaração das rotas contém atualmente apenas o ID do template a usar. Mas ao exibir uma nova página, às vezes é necessário um pouco mais. Vamos melhorar a nossa implementação de roteamento com duas funcionalidades adicionais:
### Funcionalidade 1: Títulos de Página Dinâmicos
**Objetivo:** Atribuir títulos a cada template e atualizar o título da janela com este novo título quando o template mudar.
**Por que isto é importante:**
- **Melhora** a experiência do utilizador ao mostrar títulos descritivos na aba do navegador
- **Aumenta** a acessibilidade para leitores de ecrã e tecnologias assistivas
- **Proporciona** melhor contexto para bookmarks e histórico do navegador
- **Segue** as melhores práticas profissionais de desenvolvimento web
**Abordagem de implementação:**
- **Estender** o objeto routes para incluir informação de título para cada rota
- **Modificar** a função `updateRoute()` para atualizar `document.title` dinamicamente
- **Testar** se os títulos mudam corretamente ao navegar entre ecrãs
### Funcionalidade 2: Hooks de Ciclo de Vida da Rota
**Objetivo:** Adicionar uma opção para executar algum código depois da mudança do template. Queremos imprimir `'Dashboard is shown'` no console do programador sempre que a página do dashboard for exibida.
**Por que isto é importante:**
- **Permite** a execução de lógica personalizada quando rotas específicas carregam
- **Fornece** hooks para analytics, logging ou código de inicialização
- **Cria** uma base para comportamentos de rota mais complexos
- **Demonstra** o padrão observer em desenvolvimento web
**Abordagem de implementação:**
- **Adicionar** uma propriedade opcional de função callback às configurações das rotas
- **Executar** a função callback (se existir) depois que a renderização do template terminar
- **Garantir** que a funcionalidade funciona para qualquer rota com callback definido
- **Testar** se a mensagem no console aparece quando visitar o dashboard
## Rubrica
| Critério | Exemplar | Adequado | Precisa de Melhoria |
| -------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| | As duas funcionalidades estão implementadas e funcionam. A adição de título e código também funciona para uma nova rota adicionada na declaração `routes`. | As duas funcionalidades funcionam, mas o comportamento está codificado estaticamente e não configurável através da declaração `routes`. Adicionar uma terceira rota com título e código não funciona ou funciona parcialmente. | Uma das funcionalidades está em falta ou não funciona corretamente. |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento foi traduzido recorrendo ao serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor tenha em conta que as traduções automáticas podem conter erros ou imprecisões. O documento original, na sua língua nativa, deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->