Sistema de Roteamento de Ficheiro
O Nuxt gera automaticamente a configuração do vue-router baseado na sua árvore de ficheiro de ficheiros Vue dentro do diretório pages. Sempre que você criar um ficheiro .vue dentro do seu diretório pages você terá o roteamento básico funcionando sem a necessidade de configurações extras.
Algumas vezes você pode precisar criar rotas dinâmicas ou rotas aninhadas ou você pode precisar avançar para configurar a propriedade router. Este capítulo irá através de tudo que você precisa saber no sentido de tirar o melhor proveito do seu roteador.
<template>
  <NuxtLink to="/">Home page</NuxtLink>
</template>
 Rotas Básicas
Esta árvore de ficheiro:
pages/
--| user/
-----| index.vue
-----| one.vue
--| index.vue
 automaticamente gerará:
router: {
  routes: [
    {
      name: 'index',
      path: '/',
      component: 'pages/index.vue'
    },
    {
      name: 'user',
      path: '/user',
      component: 'pages/user/index.vue'
    },
    {
      name: 'user-one',
      path: '/user/one',
      component: 'pages/user/one.vue'
    }
  ]
}
 Rotas Dinâmicas
Algumas vezes não é possível saber o nome da rota tal como quando fazemos uma chamada para uma API para receber uma lista de usuários ou publicações de um blogue. Nós chamamos esses de rotas dinâmicas. Para criar uma rota dinâmica você precisa adicionar um sublinhado (_) antes do nome do ficheiro .vue ou antes do nome do diretório. Você pode nomear o ficheiro ou diretório com o que você quiser mas você deve prefixar ele com sublinhado.
Esta árvore de ficheiro:
pages/
--| _slug/
-----| comments.vue
-----| index.vue
--| users/
-----| _id.vue
--| index.vue
 automaticamente gerará:
router: {
  routes: [
    {
      name: 'index',
      path: '/',
      component: 'pages/index.vue'
    },
    {
      name: 'users-id',
      path: '/users/:id?',
      component: 'pages/users/_id.vue'
    },
    {
      name: 'slug',
      path: '/:slug',
      component: 'pages/_slug/index.vue'
    },
    {
      name: 'slug-comments',
      path: '/:slug/comments',
      component: 'pages/_slug/comments.vue'
    }
  ]
}
 users-id tem o caminho :id? o que a torna opcional, se você quiser torna ela obrigatória, crie um ficheiro index.vue dentro do diretório users/_id.Acessando Localmente Parâmetros de Rota
Você pode acessar os parâmetros da rota atual dentro da sua página local ou componente ao referenciar this.$route.params.{parameterName}. Por exemplo, se você tinha uma página de usuários dinâmica (users/_id.vue) e quis acessar o parâmetro id para carregar o usuário ou processar informações, você poderia acessar a variável como: this.$route.params.id.
Rotas Aninhadas
O Nuxt permite você criar rotas aninhadas ao usar rotas filhas do vue-router. Para definir o componente pai de uma rota alinhada, você precisa criar um ficheiro Vue com o mesmo nome que o diretório o qual contém suas views filhas.
.vue).Esta árvore de ficheiro:
pages/
--| users/
-----| _id.vue
-----| index.vue
--| users.vue
 automaticamente gerará:
router: {
  routes: [
    {
      path: '/users',
      component: 'pages/users.vue',
      children: [
        {
          path: '',
          component: 'pages/users/index.vue',
          name: 'users'
        },
        {
          path: ':id',
          component: 'pages/users/_id.vue',
          name: 'users-id'
        }
      ]
    }
  ]
}
 Rotas Dinâmicas Aninhadas
Este não é um quadro comum, mas é possível com o Nuxt ter filhos dinâmicos dentro de pais dinâmicos.
Esta árvore de ficheiro:
pages/
--| _category/
-----| _subCategory/
--------| _id.vue
--------| index.vue
-----| _subCategory.vue
-----| index.vue
--| _category.vue
--| index.vue
 automaticamente gerará:
router: {
  routes: [
    {
      path: '/',
      component: 'pages/index.vue',
      name: 'index'
    },
    {
      path: '/:category',
      component: 'pages/_category.vue',
      children: [
        {
          path: '',
          component: 'pages/_category/index.vue',
          name: 'category'
        },
        {
          path: ':subCategory',
          component: 'pages/_category/_subCategory.vue',
          children: [
            {
              path: '',
              component: 'pages/_category/_subCategory/index.vue',
              name: 'category-subCategory'
            },
            {
              path: ':id',
              component: 'pages/_category/_subCategory/_id.vue',
              name: 'category-subCategory-id'
            }
          ]
        }
      ]
    }
  ]
}
 Rotas Dinâmicas Aninhadas Desconhecidas
Se você não sabe a profundidade da sua estrutura de URL, você pode usar _.vue para casar dinamicamente caminhos aninhados. Isto irá manipular requisições que não casarem uma rota mais específica.
Esta árvore de ficheiro:
pages/
--| people/
-----| _id.vue
-----| index.vue
--| _.vue
--| index.vue
 automaticamente gerará:
/ -> index.vue
/people -> people/index.vue
/people/123 -> people/_id.vue
/about -> _.vue
/about/careers -> _.vue
/about/careers/chicago -> _.vue
 _.vue.Estendendo o Roteador
Há várias maneiras de estender o roteamento com o Nuxt:
- router-extras-module para personalizar os parâmetros dentro da página
 - 
componente @nuxtjs/router  para sobrescrever o router do Nuxt e escrever seu próprio ficheiro 
router.js - 
Usar a propriedade router.extendRoutes  dentro do seu 
nuxt.config.js 
A Propriedade router
A propriedade router permite você personalizar o router do Nuxt (vue-router).
export default {
  router: {
    // personalize o router do Nuxt
  }
}
 Base:
A URL base da aplicação. Por exemplo, se a aplicação de página única inteira estiver servida debaixo de /app/, então a base deve usar o valor '/app/'.
extendRoutes
Você pode querer estender as rotas criadas pelo Nuxt. Você pode fazer então via opção extendRoutes.
Exemplo de adição de uma rota personalizada:
export default {
  router: {
    extendRoutes(routes, resolve) {
      routes.push({
        name: 'custom',
        path: '*',
        component: resolve(__dirname, 'pages/404.vue')
      })
    }
  }
}
 Se você quiser organizar suas rotas, você pode usar a função sortRoutes(routes) do @nuxt/utils:
import { sortRoutes } from '@nuxt/utils'
export default {
  router: {
    extendRoutes(routes, resolve) {
      // Adicione algumas rota aqui ...
      // e depois organize elas
      sortRoutes(routes)
    }
  }
}
 chunkNames correspondente dos components nomeados.export default {
  router: {
    extendRoutes(routes, resolve) {
      routes.push({
        path: '/users/:id',
        components: {
          default: resolve(__dirname, 'pages/users'), // or routes[index].component
          modal: resolve(__dirname, 'components/modal.vue')
        },
        chunkNames: {
          modal: 'components/modal'
        }
      })
    }
  }
}
 fallback
Controla se a roteador deveria recuar para o modo hash quando o browser não suportar o history.pushState mas o modo está definido para history.
mode
Configura o modo do roteador, não é recomendado mudar ele por causa da renderização do lado do servidor.
parseQuery / stringifyQuery
Fornece as funções parse / stringify da string de consulta personalizada
routeNameSplitter
Você pode querer mudar o separador entre os nomes de rota que o Nuxt usa. Você pode fazer isso via a opção routeNameSplitter dentro do seu ficheiro de configuração. Imagine que nós temos ao ficheiro de página pages/posts/_id.vue. O Nuxt gerará a nome da rota programaticamente, neste caso posts-id. Mudando a configuração do routerNameSplitter para / o nome irá portanto mudar para posts/id.
export default {
  router: {
    routeNameSplitter: '/'
  }
}
 scrollBehavior
A opção scrollBehavior permite você definir um comportamento personalizado para a posição da rolagem entre as rotas. Este método é chamado toda vez que a página é renderizada.
Disponível desde a versão 2.9.0:
No Nuxt você pode usar o ficheiro para sobrescrever o scrollBehavior do router. Este ficheiro deve ser posto dentro da uma pasta chamada app.
~/app/router.scrollBehavior.js.
Exemplo de como forçar a posição da rolagem para o topo de toda rota:
export default function (to, from, savedPosition) {
  return { x: 0, y: 0 }
}
 trailingSlash
Disponível desde a versão: 2.10
Se este opção estiver definida para true, rastros de barras serão somados a toda rota. Se definida para false, eles serão removidos,
export default {
  router: {
    trailingSlash: true
  }
}
 router.trailingSlash para alguma coisa diferente de undefined (o qual é o valor padrão), a rota oposta irá parar de funcionar. Assim redireções 301 devem estar no lugar e sua ligação interna tem de ser adaptada corretamente. Se você definir trailingSlash para true, só assim o example.com/abc/ irá funcionar mas não example.com/abc. No false, é vice-versa.
 
        N3-rd
       
 
        Adrien Zaganelli
       
 
        Mag
       
 
        Stefan Huber
       
 
        Olga Bulat
       
 
        Maciek Palmowski
       
 
        Sébastien Chopin
       
 
        Daniel Roe
       
 
        Clément Ollivier
       
 
        Paiva
       
 
        Florian Reuschel
       
 
        Rishi Raj Jain
       
 
        Savas Vedova
       
 
        Steven Soekha
       
 
        Vinícius Alves
       
 
        Kareem Dabbeet
       
 
        Valentín Costa
       
 
        Ryan Skinner
       
 
        Alex Hirzel
       
 
        Ajeet Chaulagain
       
 
        René Eschke
       
 
        Nico Devs
       
 
        Muhammad
       
 
        Nazaré da Piedade
       
 
        Naoki Hamada
       
 
        Tom
       
 
        Yann Aufray
       
 
        Anthony Chu
       
 
        Nuzhat Minhaz
       
 
        Lucas Portet
       
 
        Richard Schloss
       
 
        bpy
       
 
        Antony Konstantinidis
       
 
        Hibariya
       
 
        Jose Seabra
       
 
        Eze
       
 
        Florian LEFEBVRE
       
 
        Lucas Recoaro
       
 
        Julien SEIXAS
       
 
        Hugo
       
 
        Sylvain Marroufin
       
 
        Spencer Cooley
       
 
        Piotr Zatorski
       
 
        Vladimir Semyonov
       
 
        Harry Allen
       
 
        kazuya kawaguchi
       
 
        Unai Mengual
       
 
        Hyunseung
       
 
        Alexandre Chopin
       
 
        pooya parsa
       
 
        Nick Medrano
       
 
        Mosaab Emam
       
 
        Ilja
       
 
        Heitor Ramon Ribeiro
       
 
        Nero
       
 
        Yoon Han