Vue.jsを使ったシングルページアプリケーション(SPA)では、ページ遷移を実現するためにVue Routerを利用します。Vue Routerを理解することで、複数ページにまたがるようなWebアプリケーションでも快適なユーザー体験を提供できます。本記事では、Vue Routerの基本的な使い方と、SPA構築のための基礎を初心者向けに詳しく解説します。
シングルページアプリケーション(SPA)とは?
SPAの概要
SPA(Single Page Application)とは、通常のWebアプリケーションのように複数のHTMLページを行き来するのではなく、1つのHTMLファイルで複数の画面を切り替える構造を持つWebアプリケーションのことです。
SPAのメリットとデメリット
- メリット
- ページ遷移が高速で、ユーザー体験が向上する
- サーバーの負荷が軽減される
- リッチなユーザーインターフェースが構築できる
- デメリット
- 初回読み込みが重くなる場合がある
- ブラウザの戻るボタンや直接リンクへの対応が必要
Vue Routerとは?
Vue Routerの役割
Vue Routerは、Vue.js公式のルーティングライブラリであり、URLに応じたコンポーネントの表示を制御します。ページ遷移時にページ全体を再読み込みせずに必要な部分だけを切り替えることで、SPAの実現が可能になります。
Vue Routerのセットアップ
1. プロジェクトの作成
Vue CLIを使って新しいプロジェクトを作成します。
vue create my-vue-spa
インストールが完了したら、プロジェクトディレクトリに移動します。
cd my-vue-spa
2. Vue Routerのインストール
npm install vue-router
Vue Routerがインストールされたら、ルーティング設定を開始できます。
3. ルーターの設定ファイルを作成する
プロジェクト内のsrc
ディレクトリに新しいrouter/index.js
ファイルを作成します。
router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: About
}
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
ルーターをVueアプリに登録する
Vueアプリにルーターを登録するために、main.js
を編集します。
src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
createApp(App)
.use(router)
.mount('#app');
これでルーターがアプリ全体に適用され、各ルートに対応するコンポーネントが表示されるようになります。
基本的なルーティングの実装
1. コンポーネントの作成
各ページに対応するコンポーネントを作成します。
src/views/Home.vue
<template>
<div>
<h1>ホームページ</h1>
<p>ここはホームページです。</p>
</div>
</template>
src/views/About.vue
<template>
<div>
<h1>アバウトページ</h1>
<p>このアプリについての情報を表示します。</p>
</div>
</template>
2. ルートリンクの設定
ページ間のナビゲーションには<router-link>
を使用します。
src/App.vue
<template>
<div id="app">
<nav>
<router-link to="/">ホーム</router-link> |
<router-link to="/about">アバウト</router-link>
</nav>
<router-view></router-view>
</div>
</template>
<router-link>
:指定したパスに対応するコンポーネントに遷移します。<router-view>
:現在のルートに対応するコンポーネントが表示される領域です。
動的ルーティング
動的ルートの設定
動的ルートを使うと、URLの一部をパラメータとして扱い、ページごとに異なる内容を表示することができます。
例:動的ルートの設定
router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import UserProfile from '../views/UserProfile.vue';
const routes = [
{
path: '/user/:id',
name: 'UserProfile',
component: UserProfile
}
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
動的パラメータの取得
コンポーネント内で動的パラメータを取得するには、useRoute
を使用します。
src/views/UserProfile.vue
<template>
<div>
<h1>ユーザー情報</h1>
<p>ユーザーID: {{ userId }}</p>
</div>
</template>
<script>
import { useRoute } from 'vue-router';
export default {
setup() {
const route = useRoute();
const userId = route.params.id;
return { userId };
}
};
</script>
この例では、URLのパスから取得したユーザーIDを表示しています。
プログラムによるナビゲーション
Vue Routerでは、ユーザーの操作に依存せずプログラムからルートを変更することもできます。
例:ボタンをクリックしてページを遷移する
<template>
<div>
<button @click="goToAbout">アバウトページへ移動</button>
</div>
</template>
<script>
import { useRouter } from 'vue-router';
export default {
setup() {
const router = useRouter();
function goToAbout() {
router.push('/about');
}
return { goToAbout };
}
};
</script>
この方法を使えば、ユーザーの操作なしでプログラム的にページを遷移できます。
結論
Vue Routerを使うことで、Vue.jsを利用したSPAの構築が容易になります。基本的なルーティングから動的ルートの設定、プログラムによるナビゲーションまでをマスターすれば、複雑なWebアプリケーションの開発にも対応できるようになります。次は、ルートガードや遷移アニメーションなど、より高度な機能を学び、実際のプロジェクトに活かしていきましょう。