Em uma aplicação web moderna, qual é a melhor prática para implementar navegação entre páginas considerando SEO e performance?
AUsar window.location para redirecionamento
BImplementar React Router com componentes Link
CUtilizar tags com atributo target="_blank"
DRealizar redirecionamento via JavaScript puro
EUsar frames para separar o conteúdo das páginas
Revelar gabarito e comentário▾
GabaritoB — Implementar React Router com componentes Link
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Navegação em aplicações web modernas: SEO e performance
Gabarito: letra B. Em uma aplicação web moderna, a melhor prática para navegação entre páginas, considerando SEO e performance, é usar um roteador de front-end como o React Router, com componentes Link que geram âncoras HTML reais (<a href>). Isso permite que os mecanismos de busca rastreiem os links e que o navegador pré-carregue os recursos, mantendo a experiência de SPA (Single Page Application) sem recarregar a página inteira. As demais alternativas (redirecionamento via window.location, JavaScript puro, target="_blank" e frames) sacrificam SEO, performance ou usabilidade.
O que está em jogo aqui é a diferença entre navegação tradicional (recarregamento completo da página) e navegação client-side (SPA). Em uma SPA, o React Router (ou similar, como Vue Router) intercepta a navegação e troca apenas o conteúdo da view, sem recarregar o HTML inteiro. Isso melhora a performance percebida, pois evita o download de todos os assets novamente. Para o SEO, o componente Link renderiza uma tag <a href> real, que os crawlers do Google conseguem seguir — diferente de um window.location que só executa via JavaScript e pode não ser indexado.
A pegadinha da banca está em confundir "navegação programática" (redirecionamento via JS) com "navegação declarativa" (links). window.location e JavaScript puro são formas de redirecionar, mas não são consideradas boas práticas para SEO porque não geram links rastreáveis e podem quebrar a experiência de voltar/avançar do navegador. Já o target="_blank" abre em nova aba, o que não é navegação entre páginas do próprio site, e frames são obsoletos e prejudiciais ao SEO.
Na prática, um componente Link do React Router faz o seguinte: quando o usuário clica, ele intercepta o evento, atualiza a URL via History API e renderiza a nova rota sem recarregar a página. O crawler do Google, ao analisar o HTML, vê um link normal (<a href="/sobre">) e consegue rastrear. Isso é o melhor dos dois mundos: performance de SPA + rastreabilidade de links tradicionais.
Guarde esta distinção: navegação declarativa com Link (gera âncora HTML) é a melhor prática; navegação imperativa com window.location ou JS puro é para redirecionamentos pontuais (ex.: após login), não para a navegação principal. É exatamente nessa fronteira que as alternativas se dividem.
Navegação web moderna: Declarativa (Link) (Gera âncora HTML real, SEO rastreável, Performance de SPA); Imperativa (window.location / JS puro) (Sem link rastreável, Recarrega a página, Uso pontual (pós-login)); Obsoleta (frames) (SEO prejudicado, Acessibilidade ruim)
Alternativa A — ❌ Incorreta
Usar window.location para redirecionamento é uma forma de navegação imperativa e programática. Ela não gera um link rastreável para SEO (o crawler não vê o destino no HTML) e causa um recarregamento completo da página, prejudicando a performance. É aceitável para redirecionamentos pontuais (ex.: após autenticação), mas não como prática geral de navegação entre páginas.
Alternativa B — ✅ Correta ⟵ GABARITO
O React Router com componentes Link é a melhor prática. O Link renderiza uma tag <a href> real, o que permite que os mecanismos de busca rastreiem os links (SEO) e que o navegador pré-carregue os recursos (performance). Além disso, mantém o estado da SPA e a experiência de navegação sem recarregar a página inteira. É a abordagem padrão em aplicações React modernas.
Alternativa C — ❌ Incorreta
Utilizar tags <a> com target="_blank" abre o link em uma nova aba/janela. Isso não é navegação entre páginas do próprio site — é uma ação de abrir um recurso externo. Além disso, o uso indiscriminado de target="_blank" pode prejudicar a performance (abre nova aba) e não resolve a navegação interna da aplicação. Não é uma prática de navegação entre páginas.
Alternativa D — ❌ Incorreta
Realizar redirecionamento via JavaScript puro (ex.: window.location.href = ...) tem os mesmos problemas da alternativa A: não gera link rastreável para SEO e causa recarregamento completo. É uma solução imperativa, não declarativa, e não é considerada boa prática para navegação principal em aplicações modernas.
Alternativa E — ❌ Incorreta
Usar frames (<frame>, <iframe>) para separar o conteúdo é uma técnica obsoleta e prejudicial ao SEO. Os mecanismos de busca têm dificuldade em indexar conteúdo dentro de frames, e a experiência de navegação (URL, histórico) fica comprometida. Além disso, frames são considerados uma má prática de acessibilidade e usabilidade. Não é uma solução moderna.
NÃO CAIA NESSA!
A banca tenta confundir "redirecionamento" com "navegação". window.location e JavaScript puro são formas de redirecionar, mas não são boas práticas para navegação entre páginas em uma SPA — o candidato que pensa "qualquer forma de mudar de página serve" cai nas alternativas A ou D. Lembre-se: a melhor prática é gerar links reais (<a href>) via componente Link.
PEGA ESSA DICA!
Na prova, quando a questão falar em "SEO e performance" em aplicações web modernas, procure a alternativa que menciona roteador de front-end (React Router, Vue Router) ou componente Link. Essas opções combinam rastreabilidade (SEO) e carregamento eficiente (performance). Evite alternativas com window.location, JavaScript puro ou frames.