などの疑問や悩みを解決してまいります。
Vue.jsでルーティング管理をする上で欠かせないのがVue-Routerというライブラリです。
「これから学びたい」と考えている方や、「使ってみたけどよくわからない」といった方向けにVue-Routerのインストールから使用方法までわかりやすく解説していきます。
Vue-Routerとは
Vue-Routerは、Vue.jsのルーティング管理ライブラリです。
ルーティングとは、Webアプリケーション内で特定のURLやパスに基づいてページ遷移を行う仕組みのことです。
Vue-Routerを利用することで、効率的にSPA(シングルページアプリケーション)を実装することができます。
SPA(シングルページアプリケーション)とは
SPA(シングルアプリケーション)とは、単一のHTMLページで構成され、ページを切り替える際にページ全体を再ロードせずに、コンテンツを動的に更新するWebアプリケーションの一種です。
従来ページ遷移を行うたびページデータを読み込むMPA(マルチページアプリケーション)とは異なり、SPAは初回に全体の読み込みを行った以降は、ページ遷移する際に変更する部分のみを更新して表示します。
つまり、まずアプリケーションを構成している全コンポーネントファイルが最初にすべて読み込まれます。
ページ遷移先で必要なすでに読み込まれたコンポーネントファイルだけが切り替わる挙動になるため、表示速度が劇的に上がる仕組みになっています。
そのためコンテンツの高速切り替え、スムーズな表示切替を可能とするためユーザーにページ遷移に伴うストレスを与えません。
インストール方法
インストール方法について解説します。
まずVueプロジェクトで以下のコマンドを入力します。
npm install vue-router
インストールが完了しましたら、実際にVue-Routerを使用してSPAを実装してみましょう。
Vueプロジェクトを新規で作成する場合は、Vueをインストール際にVue-Routerを使用するかどうかの選択ができるので、このタイミングでもインストールすることができます。
Vueをインストールする方法は以下の記事でも解説していますのでぜひ参考にしてください。
-
【Vue.js】Vue.jsの開発環境の構築方法について解説します。
続きを見る
実装例紹介(動画あり)
Vueをインストールできたら利用することができるので、早速SPAを実装してみましょう。
解説する記述にはVueのUIライブラリのVuetifyの記述が含まれています。
そのままコピペして利用する場合は、以下記事を参考にVuetifyのインストールをお願いします。
-
【Vuetify3】Vuetifyの導入方法について解説します。
続きを見る
まずはmain.js(TypeScriptであればmain.ts)にVue-Routerを使用するため以下のように追記します。
import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 追記
import 'vuetify/styles'
import { createVuetify } from 'vuetify'
import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
const vuetify = createVuetify({
components,
directives,
})
const app = createApp(App)
app.use(router) // 追記
app.use(vuetify)
app.mount('#app')
次にsrcフォルダ配下にRouterフォルダを作成し、フォルダ内にindex.js(TypeScriptであればindex.ts)を作成し、以下のように記述します。
// vue-routerから必要な関数をインポート
import { createRouter, createWebHistory } from 'vue-router'
// 表示するビューコンポーネントをインポート
import HomeView from '../views/HomeView.vue'
import AboutView from '../views/AboutView.vue'
// ルーターインスタンスを作成
const router = createRouter({
// HTML5 History APIを使った履歴モードを設定
history: createWebHistory(import.meta.env.BASE_URL),
// ルートの設定
routes: [
// ルート "/" にアクセスした場合、"/home" にリダイレクト
{ path: '/', redirect: '/home' },
{
// "/home" パスに対応するルート
path: '/home',
// ルート名
name: 'home',
// 表示するコンポーネント
component: HomeView
},
{
// "/about" パスに対応するルート
path: '/about',
// ルート名
name: 'about',
// 表示するコンポーネント
component: AboutView
}
]
})
// ルーターインスタンスをエクスポート
export default router
ルーティングで使用するコンポーネントファイルを用意します。
今回はHomeView.vueとAboutView.vueを使用します。
<template>
<h1>This is Home page</h1>
</template>
<template>
<h1>This is about page</h1>
</template>
最後にApp.vueに以下のように記述します。
<script setup>
import { RouterView } from 'vue-router'
const navList = [
{
text: 'About',
routeName: 'about' // router/index.jsに記載しているnameの値を記述
},
{
text: 'Home',
routeName: 'home' // router/index.jsに記載しているnameの値を記述
}
]
</script>
<template>
<v-app>
<v-app-bar>
<v-app-bar-title> Vue-router </v-app-bar-title>
<v-list class="d-flex">
<v-list-item v-for="(item, index) in navList" :key="index" :to="{ name: item.routeName }">
<template v-slot:prepend>
<v-list-item-title class="ml-2">
{{ item.text }}
</v-list-item-title>
</template>
</v-list-item>
</v-list>
</v-app-bar>
<v-main>
<Suspense>
<v-container>
<RouterView /> // ルーティングされたコンポーネントが <RouterView /> の中に表示
</v-container>
</Suspense>
</v-main>
</v-app>
</template>
ここまで記述できましたら、ローカル環境を立ち上げて実際の挙動を確認してみましょう。
パスに応じてコンポーネントファイルが切り替わっていることが分かるかと思います。
また「/」の場合は「/home」にリダイレクトしていることも確認してください。
まとめ
ここまで読んでいただきましてありがとうございます。
本記事のまとめです。
ポイント
- Vue-Routerは、Vue.jsのルーティング管理ライブラリ
- ルーティングとは、Webアプリケーション内で特定のURLやパスに基づいてページ遷移を行う仕組みのこと
- SPA(シングルアプリケーション)とは、単一のHTMLページで構成され、ページを切り替える際にページ全体を再ロードせずに、コンテンツを動的に更新するWebアプリケーションの一種のこと