• Home

    Escolha seu Plano

    Carreiras Alura

    Evolua com profundidade técnica, direção clara e aplicação prática.

    Jornadas guiadas do básico ao avançado com checkpoints práticos, desenhadas para quem busca profundidade e protagonismo técnico.

    Iniciante

    Comece do zero com uma trilha clara e progressiva.

    Fundamentos práticos para dar os primeiros passos com segurança e construir uma base sólida.

    Intermediário

    Continue sua evolução com cursos que conectam fundamentos, ferramentas e prática profissional. Ganhe autonomia, e avance para projetos mais completos.

    Avançado

    Aprofunde temas técnicos e estratégicos para enfrentar desafios mais complexos. Explore boas práticas, arquitetura, performance com visão profissional.

    Cursos

    Ver mais cursos de Back-end
    • Pensamento computacional: fundamentos da computação e lógica de programação
    • Lógica de programação: mergulhe em programação com JavaScript
    • DDD: fundamentos do design orientado a domínio
    • ASP.NET: autenticação e autorização em APIs e aplicações web
    • Microsserviços: migração de monólitos e modularização

    Cursos

    Ver mais cursos de Dados
    • Python para Dados: primeiros passos
    • Excel: domine o editor de planilhas
    • Engenharia de Dados: Orquestração de Pipelines com Apache Airflow
    • Power BI Desktop: construindo meu primeiro dashboard
    • Governança e Arquitetura de Dados

    Cursos

    Ver mais cursos de Inteligência Artificial
    • IA: Explorando o Potencial da Inteligência Artificial Generativa
    • Engenharia de Prompt: Criando Prompts Eficazes para IA Generativa
    • Claude para Análise de Dados: prompts, integrações e automações
    • Agno: criando agentes e sistemas multiagente
    • Engenharia de software na era da IA: segurança de aplicações com agentes, MCPs e código gerado por IA

    Cursos

    Ver mais cursos de Front-end
    • HTML e CSS: ambiente, estrutura e estilo
    • React: realizando testes avançados com Jest e Testing Library
    • React: integrando TypeScript em projetos
    • JavaScript: aprendendo a programar
    • React: aplicando arquiteturas de Micro frontends

    Cursos

    Ver mais cursos de DevOps
    • Sistema Operacional Linux: fundamentos e administração prática
    • Containers e Docker: empacotamento, isolamento e gestão
    • Redes: dos conceitos iniciais à criação de uma intranet
    • Linux: gerenciando diretórios, arquivos, permissões e processos
    • Cibersegurança: Fundamentos e práticas integradas

    Cursos

    Ver mais cursos de UX & Design
    • UX Research: mapeando a experiência da pessoa usuária
    • UX/UI Design: Entregando produtos digitais com IA
    • UI Design: Prototipação e animações interativas
    • Figma: Conhecendo o programa
    • Product Design: métricas e ciclo de vida do produto

    Cursos

    Ver mais cursos de Gestão & Negócios
    • Canva: Criação de landing pages e e-mail marketing
    • Agilidade: como ela pode ajudar a criar um time de alta performance
    • Google Analytics 4: Extrair insights e configurar eventos
    • Management 3.0: gerencie o ambiente, não as pessoas
    • Automação de processos com n8n: Inteligência de dados para Marketing

    Cursos

    Ver mais cursos de Mobile
    • React Native: Estilização e Layouts com Flexbox e StyleSheet
    • Flutter: Graphql e suporte offline
    • Android com Gemini: Trabalhando com textos e imagens na IA
    • Dart: trabalhando com orientação a objetos
    • React Native: Dominando Listas com FlatList e ScrollView

    Carreiras

    Ver mais carreiras
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA

    Cursos

    • Engenharia de Prompt: Prompts Eficazes para IA Generativa
    • Claude Code: Criando sua Primeira Aplicação
    • Python: Crie sua Primeira Aplicação
    • Git e GitHub: Compartilhando e Colaborando
    • N8N: Fluxos de Trabalho Avançados

    Cursos

    • Copilot Studio: Solução Multiagentes
    • Padrões de API HTTP e Modelagem de APIs
    • Python para Análise de Dados com SQL
    • Docker: Criando e Gerenciando Containers
    • Design com IA: Otimizando o Processo Criativo

    Cursos

    • Model Context Protocol (MCP)
    • Spec-Driven Development: Dev Assistido por Agentes
    • Arquitetura de Sistemas Distribuídos com Java
    • Governança de Modelos e Reprodutibilidade
    • Pentest: Vulnerabilidades em Aplicações Web

    Escolha seu Plano

    Skills & Go

    O Skills & Go é para Tech Leads, Product Managers, estrategistas e early adopters que transformam ideias em soluções de alto impacto. Em cursos ao vivo e 100% online, você domina a nova era da IA em tempo real.

    Aulas ao vivo

    Saiba mais
    • Agentic Engineering: orquestre múltiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA

    Escolha seu Plano

    Eventos Alura

    Nossos eventos são pensados para quem quer estar à frente das mudanças em tecnologia, IA e inovação. Em experiências presenciais, você acompanha tendências e se conecta com especialistas que estão moldando o futuro.

    Próximos eventos

    • Imersão Engenharia de Software: Dev na Era da IA
    • IA Conference
    • Alura Signals
  • Talent Lab
  • IA

    Escolha seu Plano

    Conteúdos gratuitos

    Explore conteúdos gratuitos para aprender tecnologia no seu ritmo. Encontre artigos com conteúdos técnicos para aprender na prática, notícias para acompanhar as principais tendências do mercado e o Alura Labs, com análises e reflexões de especialistas sobre tecnologia, IA e carreira.

    Conteúdos gratuitos

    • Artigos
    • Notícias
    • Alura Labs
  • Para Empresas
Ver planos
Links principais
  • Planos e Promoções
  • Links complementares do menu mobile
  • Talent lab
  • Inteligência Artificial
  • Pós Graduações
  • Para Empresas
  • Sobre a Alura
  • Grupo Alun
  • Entrar
    • Home
    • Carreiras
    • Skills & Go
    • Talent Lab
    • Inteligência Artificial
    • Pós Graduações
    • Artigos
    • Sobre a Alura
    • Grupo Alun
    LoginContato
    • LinkedIn
    • Instagram
    • YouTube
    1. Página inicial
    2. Front-end
    3. Roteamento com segmentos dinâmicos no Next.js: guia completo

    Roteamento com segmentos dinâmicos no Next.js: guia completo

    10 min10 minutos de leitura

    10 min10 minutos de leitura

    Publicado: 10/06/2024

    1. Como começar
    2. Convenções de roteamento
    3. Como criar uma rota
    4. Adicionando rotas adicionais
    5. Lidando com rotas não correspondentes
    6. Rotas aninhadas
    7. Rotas dinâmicas
    8. Conclusão

    O roteamento de páginas numa aplicação web desempenha um papel muito importante, permitindo que os usuários naveguem de maneira fluida entre várias páginas ou seções. Isso torna a experiência do usuário mais intuitiva e eficiente.

    Neste artigo, vamos explorar as poderosas funcionalidades de roteamento do Next.js e focar especificamente no novo App Router, que traz ainda mais flexibilidade e simplicidade para a criação de rotas na sua aplicação.

    Como começar

    Para começar, crie e execute um novo projeto Next.js 14 usando os seguintes comandos no terminal:

    
    npx create-next-app@latest routing-app
    cd routing-app
    npm run dev
    

    Abra o projeto no seu editor de código preferido e expanda a pasta src. Para começar do zero, delete a pasta app para criar apenas as rotas que serão utilizadas.

    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Convenções de roteamento

    O Next.js emprega um mecanismo de roteamento baseado no sistema de arquivos, onde os caminhos de URL no navegador são determinados por arquivos e pastas na base de código.

    Seguir as convenções é importante para o funcionamento do roteamento.

    Como criar uma rota

    Para criar uma rota para a URL raiz (localhost:3000), siga estas etapas:

    1 - Crie uma pasta src/app;

    2 - Dentro da pasta app, crie um arquivo page.tsx. Este arquivo representa a rota;

    3 - Defina um componente React simples no arquivo page.tsx para representar a página "Home":

    
    export default function Home() {
      return <h1>Nem tudo o que é ouro reluz, nem todos os que vagam estão perdidos.</h1>;
    }
    

    Seguindo essas convenções, criamos nossa primeira rota com sucesso. Então, abra seu navegador e navegue para localhost:3000 para ver a mensagem do mago Gandalf.

    Adicionando rotas adicionais

    Vamos agora criar mais duas rotas: uma para a página About e outra para a página Profile.

    1 - Crie uma pasta src/app/about;

    2 - Dentro da pasta about, crie um arquivo page.tsx. Este arquivo representa a rota;

    3- Defina um componente React no arquivo page.tsx para representar a página "About":

    
    export default function About() {
      return <h1>Mesmo na escuridão mais densa, uma luz pode brilhar e mostrar o caminho.</h1>;
    }
    

    Agora precisamos fazer o mesmo para a página de perfil, certo?

    1 - Crie uma pasta src/app/profile;

    2 - Dentro da pasta profile, crie um arquivo page.tsx. Este arquivo representa a rota;

    3 - Defina um componente React no arquivo page.tsx para representar a página "Profile":

    
    export default function Profile() {
      return <h1>Gandalf? Sim... Esse era o meu nome. Gandalf, o Cinzento. Sou Gandalf, o Branco agora.</h1>;
    }
    

    Quando você visitar a URL http://localhost:3000, a página inicial será exibida. Mas quando você navegar para http://localhost:3000/about, verá a página "About". Da mesma forma, alterando a URL para /profile será exibida a página "Profile".

    Isso é o roteamento baseado em arquivos! Podemos identificar que as rotas estão associadas a um arquivo com base no nome da pasta que o contém dentro da pasta app.

    Lidando com rotas não correspondentes

    Já parou para pensar o que acontece se você digitar uma URL que não pode ser mapeada para um arquivo dentro da pasta app? Por exemplo, /dashboard, que não existe no nosso projeto.

    Bom, o Next.js responderá automaticamente com uma resposta 404 Not Found. Você não precisa lidar com isso se não quiser, porque o Next.js cuida disso para você.

    Podemos, no entanto, lidar com erros de forma amigável e apresentar mensagens customizadas para a pessoa que está interagindo com nossa aplicação.

    Gif com o Gandalf falando a frase: “I have no memory of this place”, que significa “Não tenho lembranças desse lugar”.

    Rotas aninhadas

    Além das rotas básicas, o Next.js oferece suporte para rotas aninhadas, permitindo que você estabeleça uma estrutura hierárquica dentro da sua aplicação.

    Vamos renderizar uma página quando o usuário navegar para a URL http://localhost:3000/blog. Além disso, precisamos renderizar páginas para http://localhost:3000/blog/first e http://localhost:3000/blog/second.

    Para implementar rotas aninhadas, siga estas etapas:

    1 - Crie uma pasta src/app/blog;

    2 - Dentro da pasta blog, crie um arquivo page.tsx para a página principal do blog:

    
    export default function Blog() {
      return <h1>Há sempre algo de bom para aqueles que procuram.</h1>;
    }
    

    3 - Navegue para http://localhost:3000/blog para ver a página que acabamos de criar.

    Mas não é só isso, temos ainda que implementar as rotas /blog/first e /blog/second. Seguindo o mesmo padrão:

    4 -rie arquivos page.tsx nas pastas src/app/blog/first e src/app/blog/second:

    
    // src/app/blog/first/page.tsx
    export default function FirstBlog() {
      return <h1>Grandes feitos não são realizados pela força, mas pela perseverança e pela sabedoria.</h1>;
    }
    // src/app/blog/second/page.tsx
    export default function SecondBlog() {
      return <h1>As inscrições na porta são antigas runas élficas. Dizem: 'As portas de Durin, Senhor de Moria. Fale, amigo, e entre.</h1>;
    }
    

    Rotas dinâmicas

    Em vez de criar caminhos predefinidos como /blog/first e /blog/second para cada página, podemos usar rotas dinâmicas para tornar o processo mais eficiente.

    Para ilustrar, vamos usar um exemplo inspirado em um famoso mago de uma história épica.

    Criando rotas dinâmicas

    Vamos criar uma lista de personagens e uma página de detalhes para cada um. Siga estes passos:

    1 - Crie uma pasta src/app/characters;

    2 - Dentro da pasta characters, crie um arquivo page.tsx para exibir uma lista de personagens:

    
    export default function CharacterList() {
      return (
        <>
          <h1>Lista de Personagens</h1>
          <h2>Gandalf</h2>
          <h2>Frodo</h2>
          <h2>Aragorn</h2>
        </>
      );
    }
    

    Criando a página de detalhes

    Para a página de detalhes de cada personagem, siga estes passos:

    1 - Dentro da pasta characters, crie uma nova pasta chamada [characterId]. Os colchetes indicam um segmento de rota dinâmico;

    2 - Dentro da pasta [characterId], crie um arquivo page.tsx:

    
    export default function CharacterDetail() {
      return <h1>Detalhes sobre o personagem</h1>;
    }
    

    Agora, quando você navega para localhost:3000/characters/gandalf, verá a página de detalhes do personagem.

    Da mesma forma, acessando /characters/frodo, /characters/aragorn, ou mesmo /characters/legolas exibirá a mesma página de detalhes. [characterId] é o segmento de rota dinâmico que pode acomodar valores como gandalf, frodo, aragorn e assim por diante.

    Exibindo o ID específico do personagem

    Para exibir o ID específico do personagem, você pode usar o objeto params disponível em cada página. Modifique o componente da seguinte forma:

    
    export default function CharacterDetail({
      params,
    }: {
      params: { characterId: string };
    }) {
      return <h1>Detalhes sobre o personagem {params.characterId}</h1>;
    }
    

    Agora, quando você navega para http://localhost:3000/characters/gandalf, os detalhes sobre o personagem Gandalf serão exibidos.

    Da mesma forma, visitando /characters/legolas exibirá os detalhes sobre Legolas. As rotas dinâmicas são extremamente úteis ao implementar esse padrão de lista-detalhe.

    Rotas dinâmicas aninhadas

    Agora vamos falar sobre rotas dinâmicas aninhadas, que são essenciais para aplicações complexas que precisam de múltiplos segmentos de rota dinâmicas.

    Por exemplo, ao navegar para /characters/gandalf, você espera ver os detalhes de Gandalf. Da mesma forma, ao visitar /characters/gandalf/quotes/1, deve ser exibida a primeira citação de Gandalf. Vamos ver como podemos alcançar isso usando o App Router.

    Criando rotas dinâmicas aninhadas

    Para criar rotas dinâmicas aninhadas, siga estas etapas:

    1 - Crie uma pasta src/app/characters/[characterId]/quotes. Esta estrutura nos leva à rota /characters/[characterId]/quotes. Mas também precisamos de um quoteId dinâmico;

    2 - Dentro da pasta quotes, crie uma nova pasta chamada [quoteId]. (lembrando que os colchetes indicam um segmento de rota dinâmico);

    3 - Dentro da pasta [quoteId], crie um arquivo page.tsx onde definiremos um componente React para exibir tanto o characterId quanto o quoteId:

    
    export default function QuoteDetail({
      params,
    }: {
      params: { characterId: string; quoteId: string };
    }) {
      return (
        <h1>
          Citação {params.quoteId} do personagem {params.characterId}
        </h1>
      );
    }
    

    Agora, se navegarmos para http://localhost:3000/characters/gandalf/quotes/1 no navegador, o texto esperado será exibido. Da mesma forma, navegando para characterId=gandalf e quoteId=1 refletirá os IDs correspondentes na tela.

    Diagrama de estrutura de arquivos exibido em um fundo escuro. A estrutura começa com a pasta

    Repara que é possível criar rotas dinâmicas aninhadas utilizando segmentos dinâmicos nos nomes das pastas, o que facilita a construção de aplicações complexas mas bem estruturadas.

    Segmentos catch-all

    Vamos analisar agora um recurso super útil do Next.js: os segmentos catch-all (e não estou falando sobre Pokémons =]).

    Eles permitem um roteamento muito mais flexível, ideal para situações em que você precisa lidar com várias rotas dinâmicas sem criar um arquivo separado para cada uma.

    Imagine que estamos criando um site de documentação com vários recursos e conceitos.

    Em vez de criar um arquivo para cada rota, podemos usar segmentos catch-all para simplificar o processo.

    Para implementar segmentos catch-all, siga estas etapas:

    1 - Crie uma pasta src/app/receitas;

    2 - Dentro da pasta receitas, crie uma pasta com um nome especial reconhecido pelo Next.js. Use colchetes e três pontos (por exemplo, [...slug]) para incluir um nome de sua escolha;

    3 - Dentro da pasta [...slug], crie um arquivo page.tsx com um componente React básico representando a página inicial das receitas:

    
    export default function Receitas() {
      return <h1>Página inicial de receitas</h1>;
    }
    

    Usando essa estrutura, o arquivo page.tsx corresponderá a qualquer URL que contenha o segmento /receitas no caminho.

    Dessa forma, podemos definir um único arquivo que lida com todos os segmentos de rota na URL.

    Acessando diferentes segmentos na URL

    Para acessar os diferentes segmentos na URL, utilizamos o objeto params fornecido pelo Next.js.

    Por exemplo, navegando para http://localhost:3000/receitas/italiana/pasta, podemos renderizar o seguinte componente:

    
    export default function Receitas({ params }: { params: { slug: string[] } }) {
      if (params.slug.length === 2) {
        return (
          <h1>
            Visualizando receita da cozinha {params.slug[0]}: {params.slug[1]}
          </h1>
        );
      } else if (params.slug.length === 1) {
        return <h1>Visualizando receitas da cozinha {params.slug[0]}</h1>;
      }
      return <h1>Página inicial de receitas</h1>;
    }
    

    Pense nos segmentos catch-all como um grande baú que pode conter várias combinações de palavras na URL.

    É como se você tivesse um livro de receitas onde cada seção e subseção pode ser acessada facilmente sem precisar criar uma página separada para cada uma.

    Diagrama de estrutura de arquivos exibido em um fundo escuro. A estrutura começa com a pasta

    Alguns casos de uso comuns para o uso do catch-all

    Sites de Receitas: Você tem várias categorias e subcategorias (como /receitas/italiana/pasta, /receitas/brasileira/feijoada). Usando segmentos catch-all, um único componente pode lidar com todas essas variações.

    Aplicativos de Viagens: Imagine um site onde as URLs são estruturadas como /viagens/europa/franca/paris ou /viagens/america/brazil/rio-de-janeiro. Com segmentos catch-all, você pode usar um único arquivo para renderizar qualquer combinação de continente, país e cidade.

    Portais de Educação: Para um site educacional com URLs como /cursos/programacao/javascript ou /cursos/design/grafico, segmentos catch-all permitem lidar com todas essas rotas de maneira eficiente.

    Conclusão

    O roteamento é uma parte integral do desenvolvimento web, permitindo que os usuários naveguem entre diferentes páginas dentro de uma aplicação. O Next.js simplifica o roteamento por meio de seu mecanismo baseado no sistema de arquivos.

    Nós exploramos o básico do roteamento no Next.js 14, focando especificamente no App Router introduzido na versão mais recente.

    Discutimos convenções de roteamento, criamos rotas para diferentes cenários e destacamos a abordagem de convenção sobre configuração do Next.js para roteamento.

    Com o Next.js, você pode definir e gerenciar rotas facilmente aproveitando a estrutura de arquivos e pastas da sua base de código, eliminando a necessidade de configuração adicional de roteamento.

    Se você quiser mergulhar ainda mais fundo, que tal conhecer a Formação Next.js 14: desenvolvendo aplicações robustas com alta produtividade, aqui da Alura?

    Nessa formação, você, a Patrícia Silva e eu vamos desenvolver aplicações e nos aprofundar nesse Framework que é super utilizado no universo do React!

    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Avalie este artigo

    • Foto de Vinicios Neves

      Autor(a)

      Vinicios Neves

      Vinicios Neves, Tech Lead e Educador, mistura código e didática há mais de uma década. Especialista em TypeScript, lidera equipes full-stack em Portugal e inspira futuros desenvolvedores na FIAP e Alura. Com um pé no código e outro no ensino, ele prova que a verdadeira engenharia de software vai além das linhas de código. Além de, claro, ser senior em falar que depende.

    Explore por tópico

    • Back-end
    • Dados
    • DevOps
    • Front-end
    • Gestão & Negócios
    • Institucionais
    • Inteligência Artificial
    • Mobile
    • UX & Design

    Leia também

    • 25/04/2021

      Desmistificando testes de unidade no Vue

      Ler mais
    • 27/04/2022

      Como o Next.js ajuda no SEO das SPAs?

      Ler mais
    • 17/11/2024

      CSR, SSR e SSG: entenda as diferenças e aplicações

      Ler mais
    Ver mais conteúdos

    Inscreva-se em nossa Newsletter

    Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.

    Institucional

    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status
    Institucional
    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status

    A Alura

    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes
    A Alura
    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes

    Conteúdos

    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Conteúdos
    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Alura