この記事の目次
Vue Routerの使い方とは
Vue Router は、Vue 公式のルーター(URL と画面を結びつける仕組み)です。Vue 公式ドキュメントは、ほとんどの SPA(1枚の HTML の中で画面を切り替えるアプリ)で、公式がサポートする Vue Router を使うことを勧めています。
Vue Router を使うと、/about のような URL ごとに、表示する部品(画面)を決められます。リンクを押しても、ページ全体を再読み込みせずに画面だけが切り替わります。この記事では、2026年10月時点の Vue Router 5.3.1 で実際に動かした例をもとに、最初に必要な使い方をまとめます。
基本(3つの部品)
| 部品 | 役割 | 書く場所 |
|---|---|---|
ルートの表(routes) |
URL のパスと、表示する部品の対応 | src/router/index.js |
<RouterLink to="…"> |
画面を切り替えるリンク | 画面のテンプレート |
<RouterView /> |
URL に対応した部品を表示する場所 | 多くは App.vue |
Vue Router の公式ガイドによると、<RouterLink> は普通の <a> タグの代わりに使い、ページを再読み込みせずに URL を変えます。<RouterView> は、今の URL に対応する部品を表示する場所で、どこかに置かないと何も表示されません。
サンプルコード(実行結果つき)
src/router/index.js(create-vue で Router を選ぶと作られるものに、2つのルートを足しました)
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{ path: '/users/:id', name: 'user', component: () => import('../views/UserView.vue') },
{ path: '/', name: 'home', component: HomeView },
{ path: '/about', name: 'about', component: () => import('../views/AboutView.vue') },
],
})
export default router
src/App.vue
<script setup>
import { RouterLink, RouterView } from 'vue-router'
</script>
<template>
<nav>
<RouterLink to="/">ホーム</RouterLink> |
<RouterLink to="/about">このサイトについて</RouterLink>
</nav>
<RouterView />
</template>
src/views/UserView.vue(URL の一部を受け取る画面)
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
</script>
<template>
<h2>ユーザー {{ route.params.id }} のページ</h2>
</template>
src/main.js では、app.use(router) を app.mount('#app') より前に書きます(create-vue で作れば、最初から書かれています)。
動作確認(検証環境と結果)
- Vue 3.5.43、Vue Router 5.3.1、Vite 8.3.3、Microsoft Edge、2026年10月。
- 「このサイトについて」を押すと、再読み込みなしで URL が
/aboutに変わり、About の画面が表示されました。 /users/42を開くと「ユーザー 42 のページ」と表示されました。:idの部分がroute.params.idに入っています。npm run buildしたdistを、フォールバックの設定がない簡易サーバーに置いて/aboutを直接開くと、404 になりました(npm run previewでは表示されました)。
Vue Routerの使い方の注意点
createWebHistoryと公開時の 404: 普通の URL(/about)で切り替える方式です。見た目はきれいですが、/aboutを直接開いたり再読み込みしたりすると、サーバーがそのファイルを探して 404 を返します。Vue Router の公式は、見つからない URL にindex.htmlを返す設定(フォールバック)をサーバーに足すよう案内しています。createWebHashHistory: URL に#が入る方式(/#/about)で、サーバーの設定は不要です。ただし、公式は SEO(検索での扱い)に悪い影響があると説明しています。() => import(...)の書き方: その画面を開いたときに初めて読み込む書き方(遅延読み込み)で、最初に読み込むファイルを小さくできます。$route(今の URL の情報)と$router(移動させる道具)は、rが1文字違うだけなので混同に注意します。<script setup>ではuseRoute()とuseRouter()を使います。
Vue Routerの使い方でよくあるミス
<RouterView />を置き忘れて、何も表示されない。- 画面の切り替えに
<a href="/about">を使い、ページ全体が再読み込みされる(共有データも消える)。 - 公開後に、再読み込みで 404 になる(フォールバック未設定)。
Vue Routerの使い方のチェックリスト
- [ ]
routesに path と component を書いた - [ ]
App.vueに<RouterView />を置いた - [ ] 画面の切り替えに
<RouterLink>を使った - [ ] URL の値は
useRoute()のparamsで受け取った - [ ] 公開先のサーバーにフォールバックを設定した
Vue Routerの使い方のFAQ(よくある質問)
Q. JavaScript の中から画面を移動させたいです。
A. useRouter() で router を取り出し、router.push('/about') のように書きます。
Q. 存在しない URL のときに「見つかりません」の画面を出したいです。
A. ルートの表の最後に、すべての URL に当たるルートを書き、専用の画面を表示させる方法があります。書き方は Vue Router の公式ガイドで確認してください。
Q. Vue Router は CDN でも使えますか?
A. 使えます。公式ガイドでは、グローバルビルドでは VueRouter というグローバル変数から取り出すと説明しています。ただし、ガイドの多くの例は、Vite と .vue ファイルを前提にしています。
筆者の見解(Vue Routerの使い方)
Vue Router でつまずく原因は、書き方よりも「公開したときの 404」だと感じます。開発中は npm run dev が自動でフォールバックしてくれるため、問題に気づかないまま公開してしまうからです。私は、Router を入れた時点で、公開先のサーバーにフォールバックを設定できるかを先に確かめておくことを勧めます。
Vue Routerの使い方の関連項目
- npm create vue@latestの使い方|Vueプロジェクト作成
- Piniaの使い方|ストアの作成とstate・getters・actions
- Vueアプリのビルドと公開|npm run build・base・404対策
- Vue 3 script setupとは|書き方・defineProps・defineEmits(近日公開)
- Vue 3 コンポーネントの基本|作り方・登録・slotの使い方
