router プロパティ
router プロパティを使って Nuxt ルーター (vue-router )をカスタマイズできます。
base
- 
型: 
String - 
デフォルト: 
'/' 
アプリケーションのベースの URL です。例えば、単一ページアプリケーション全体が /app/ 下に配置される場合、base の値は '/app/' を指定します。
これは、より大きな Web サイト内から、Nuxt を別のコンテキストルートとして提供する必要がある場合に役立ちます。フロントプロキシウェブサーバーを設定する場合としない場合があることに注意してください。
router.base にリダイレクトしたい場合、Hook を使ってリダイレクトすることができます。ルートでない場合 router.base にリダイレクトさせるを参照してください 。
Nuxt v2.15 以降では、実行時にこのプロパティの値を変更すると、既にビルドされているアプリケーションの設定が上書きされます。
export default {
  router: {
    base: '/app/'
  }
}
 base が設定されている場合、Nuxt はドキュメントヘッダー <base href="{{ router.base }}"/> も追加します。このオプションは直接 vue-router の base に渡されます。
routeNameSplitter
- 
型: 
String - 
デフォルト: 
'-' 
Nuxt が使うルート名間の区切り文字を変更したいかもしれません。その場合は設定ファイルの routeNameSplitter オプションを介して変更できます。ページファイル pages/posts/_id.vue があると仮定します。Nuxt はプログラムでルート名(今回の場合は posts-id)を生成します。routeNameSplitter の設定を / に変更するとルート名は posts/id に変更されます。
export default {
  router: {
    routeNameSplitter: '/'
  }
}
 extendRoutes
- 
型: 
Function 
Nuxt によって作成されたルートを拡張したいことがあるかもしれません。その場合は extendRoutes オプションを介して拡張できます。
export default {
  router: {
    extendRoutes(routes, resolve) {
      routes.push({
        name: 'custom',
        path: '*',
        component: resolve(__dirname, 'pages/404.vue')
      })
    }
  }
}
 ルートをソートしたい場合、@nuxt/utils の sortRoutes(routes) 関数を使えます:
import { sortRoutes } from '@nuxt/utils'
export default {
  router: {
    extendRoutes(routes, resolve) {
      // ルートをここに追加する ...
      // それからソートする
      sortRoutes(routes)
    }
  }
}
 ルートのスキーマは vue-router スキーマを尊重してください。
components の chunkNames の追加を忘れないでください。export default {
  router: {
    extendRoutes(routes, resolve) {
      routes.push({
        path: '/users/:id',
        components: {
          default: resolve(__dirname, 'pages/users'), // または routes[index].component
          modal: resolve(__dirname, 'components/modal.vue')
        },
        chunkNames: {
          modal: 'components/modal'
        }
      })
    }
  }
}
 fallback
- 
型: 
boolean - 
デフォルト: 
false 
history.pushState がサポートされていないブラウザにおいて、モードが history に設定されているとき、ルーターを hash モードにフォールバックするかどうか制御します。 Controls whether the router should fallback to hash mode when the browser does not support history.pushState but mode is set to history.
これを false に設定すると、基本的にすべてのルーターリンクのナビゲーションが IE9 でフルページリフレッシュされるようになります。これは、アプリがサーバーレンダリングされており、ハッシュモードのURLが SSR で動作しないため、IE9 で動作させる必要がある場合に便利です。
このオプションは直接 vue-router の fallback に渡されます。
linkActiveClass
- 
型: 
String - 
デフォルト: 
'nuxt-link-active' 
<nuxt-link>  のデフォルトの active class をグローバルに設定します。
export default {
  router: {
    linkActiveClass: 'active-link'
  }
}
 このオプションは直接 vue-router の linkActiveClass に渡されます。
linkExactActiveClass
- 
型: 
String - 
デフォルト: 
'nuxt-link-exact-active' 
<nuxt-link>  のデフォルトの active class をグローバルに設定します。
export default {
  router: {
    linkExactActiveClass: 'exact-active-link'
  }
}
 このオプションは直接 vue-router の linkExactActiveClass に渡されます。
linkPrefetchedClass
- 
型: 
String - 
デフォルト: 
false 
<nuxt-link>  の prefetch クラスをグローバルに設定します(デフォルトは無効の機能)。
export default {
  router: {
    linkPrefetchedClass: 'nuxt-link-prefetched'
  }
}
 middleware
- 
型: 
StringまたはArray- 
要素: 
String 
 - 
要素: 
 
アプリケーションのページごとにデフォルトのミドルウェアを設定します。
export default {
  router: {
    // ページごとに middleware/user-agent.js を実行します
    middleware: 'user-agent'
  }
}
 export default function (context) {
  // userAgent プロパティを context(`asyncData` と `fetch` メソッドで利用できます)内に追加します
  context.userAgent = process.server
    ? context.req.headers['user-agent']
    : navigator.userAgent
}
 ミドルウェアについてより深く理解するために、ミドルウェアのドキュメント を参照してください。
mode
- 
型: 
String - 
デフォルト: 
'history' 
ルーティングのモードを設定します。サーバーサイドレンダリングのためにこの設定を変更することはおすすめしません。
export default {
  router: {
    mode: 'hash'
  }
}
 このオプションは直接 vue-router の mode に渡されます。
parseQuery / stringifyQuery
- 
型: 
Function 
カスタムクエリ構文解析関数/文字列化関数を提供します。デフォルトを上書きします。
このオプションは直接 vue-router の parseQuery / stringifyQuery に渡されます。
prefetchLinks
この機能は Nuxt v2.4.0 で追加されました
- 
型: 
Boolean - 
デフォルト: 
true 
viewport(ブラウザの表示領域)内でリンクが検出された時に コード分割された ページを先読みする <nuxt-link> の設定をします。IntersectionObserver  がサポートされている必要があります(Caniuse  を参照してください)。
この機能を Polyfill.io のようなサービスに条件付きで埋め込むことをおすすめします:
export default {
  head: {
    script: [
      {
        src:
          'https://polyfill.io/v3/polyfill.min.js?features=IntersectionObserver',
        body: true
      }
    ]
  }
}
 特定のリンクで先読みを無効にしたい場合、no-prefetch プロパティが使えます。Nuxt v2.10.0 からは prefetch プロパティ(false に設定)も使えます:
<nuxt-link to="/about" no-prefetch>About page not prefetched</nuxt-link>
<nuxt-link to="/about" :prefetch="false">About page not prefetched</nuxt-link>
 全てのリンクで先読みを無効にしたい場合は、prefetchLinks を false に設定してください:
export default {
  router: {
    prefetchLinks: false
  }
}
 Nuxt v2.10.0 からは prefetchLinks を false に設定した上で特定のリンクを先読みしたい場合、prefetch プロパティが使えます:
<nuxt-link to="/about" prefetch>About page prefetched</nuxt-link>
 prefetchPayloads
v2.13.0 で追加された機能で、静的なターゲット でのみ利用できます。
- 
型: 
Boolean - 
デフォルト: 
true 
target: 'static' に設定した上で nuxt generate を使う場合、Nuxt はページごとに payload.js を生成します。
このオプションを有効にすると、viewport に <nuxt-link> が表示された時に Nuxt はリンク先ページのペイロードを自動的に先読みしインスタントナビゲーションを作成します。
prefetchPayloads を false に設定することで無効にできます:
export default {
  router: {
    prefetchPayloads: false
  }
}
 scrollBehavior
- 
型: 
Function 
scrollBehavior オプションを使って、ページ間のスクロール位置についての独自の振る舞いを定義できます。このメソッドはページがレンダリングされるたびに毎回呼び出されます。詳細は vue-router のスクロールの振る舞いのドキュメント を参照してください。
router.scrollBehavior.js ファイルはプロジェクトルートの app フォルダー内に置く必要があります。Nuxt のデフォルトの router.scrollBehavior.js ファイルは次の場所にあります:
packages/vue-app/template/router.scrollBehavior.js
すべてのルートにおいて強制的にトップまでスクロールさせる例:
app/router.scrollBehavior.js
export default function (to, from, savedPosition) {
  return { x: 0, y: 0 }
}
 trailingSlash
- 
型: 
Booleanまたはundefined - 
デフォルト: 
undefined - 利用できる最小バージョン: v2.10
 
このオプションを true に設定した場合、末尾のスラッシュがすべてのルートに追加されます。もし false に設定した場合は末尾のスラッシュは削除されます。
注意: このオプションは準備なしに設定すべきではなく、徹底的にテストする必要があります。router.trailingSlash に undefined 以外の値を設定すると、反対のルートは機能しなくなります。したがって、301 リダイレクトを設定し、内部リンク を正しく適応させる必要があります。trailingSlash を true に設定した場合、example.com/abc/ のみが動作し example.com/abc は動作しません。false に設定する場合はその逆になります。
動作例(子ルートあり)
ディレクトリ構造:
-| pages/
---| index.vue
---| posts.vue
---| posts/
-----| _slug.vue
-----| index.vue
 これは trailingSlash の設定がそれぞれ有効な場合の動作です:
Route           Page
/               ~/pages/index.vue
/posts          ~/pages/posts.vue (parent) + ~/pages/posts.vue (child route)
/posts/         ~/pages/posts.vue (parent) + ~/pages/posts.vue (child route)
/posts/foo      ~/pages/posts.vue (parent) + ~/pages/_slug.vue (child route)
/posts/foo/     ~/pages/posts.vue (parent) + ~/pages/_slug.vue (child route)
 Route           Page
/               ~/pages/index.vue
/posts          404
/posts/         ~/pages/posts.vue (parent) + ~/pages/index.vue (child route)
/posts/foo      404
/posts/foo/     ~/pages/posts.vue (parent) + ~/pages/_slug.vue (child route)
 Route           Page
/               ~/pages/index.vue
/posts          ~/pages/posts.vue
/posts/         ~/pages/posts.vue (parent) + ~/pages/index.vue (child route)
/posts/foo      ~/pages/posts.vue (parent) + ~/pages/_slug.vue (child route)
/posts/foo/     404
 
 
        Sébastien Chopin
       
 
        Nazaré da Piedade
       
 
        Nobu
       
 
        川音리오
       
 
        Maciek Palmowski
       
 
        Nestor Vera
       
 
        Daniel Roe
       
 
        Yue Yang
       
 
        Jeronimas
       
 
        Alessandro Carrano
       
 
        Clément Ollivier
       
 
        Alexander Lichter
       
 
        N3-rd
       
 
        Adrien Zaganelli
       
 
        Mag
       
 
        Stefan Huber
       
 
        Olga Bulat
       
 
        Paiva
       
 
        Florian Reuschel
       
 
        Savas Vedova
       
 
        Steven
       
 
        Vinícius Alves
       
 
        Kareem Dabbeet
       
 
        Valentín Costa
       
 
        Ryan Skinner
       
 
        Alex Hirzel
       
 
        Ajeet Chaulagain
       
 
        René Eschke
       
 
        Nico Devs
       
 
        Muhammad
       
 
        Naoki Hamada
       
 
        Tom
       
 
        Yann Aufray
       
 
        Anthony Chu
       
 
        Nuzhat Minhaz
       
 
        Lucas Portet
       
 
        Richard Schloss
       
 
        Bobby
       
 
        bpy
       
 
        Antony Konstantinidis
       
 
        Hibariya
       
 
        Jose Seabra
       
 
        Eze
       
 
        Florian Lefebvre
       
 
        Lucas Recoaro
       
 
        Julien SEIXAS