Vue Routerの基本的な実装方法

Vue Routerの初期設定

index.jsファイル内でVueとVue Routerをインポートします。

  • Vueのインポート
    import Vue from 'vue'
  • Vue Routerのインポート
    import VueRouter from 'vue-router'

モジュール化によるRouterの適用

VueプラグインとしてVue Routerを登録します。

Vue.use(VueRouter)

ルーターオブジェクトの作成


const appRouter = new VueRouter({
    mode: "history", //ハッシュなしのURL形式
    routes: [
        {
            path: "/about",
            component: AboutPage
        },
        {
            path: "/home",
            component: HomePage
        },
        {
            path: "/",
            redirect: "/home" //ルートパスをホームにリダイレクト
        }
    ]
})
export default appRouter;

main.jsでのルーター設定


new Vue({
  router: appRouter, //Vueインスタンスにルーターをマウント
  render: h => h(App)
}).$mount('#app')

実装コード例

main.js


import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
import appRouter from './router/index'
new Vue({
  render: h => h(App),
  router: appRouter, //全コンポーネントで$routerプロパティ経由でルーターにアクセス可能
}).$mount('#app')

router/index.js


import Vue from 'vue'
import VueRouter from 'vue-router'
import AboutPage from '../views/About.vue'
import HomePage from '../views/Home.vue'
Vue.use(VueRouter)
const appRouter = new VueRouter({
    //hashモード(デフォルト)ではURLに#が含まれる
    //historyモードではクリーンなURLが使用可能
    mode: "history",
    routes: [
        {
            path: "/about",
            component: AboutPage
        },
        {
            path: "/home",
            component: HomePage
        },
        {
            path: "/",
            redirect: "/home"
        }
    ]
})
export default appRouter;

App.vue


<template>
    <div class="app-container">
        <nav>
            <router-link to="/about">Aboutページ</router-link>
            <router-link to="/home">Homeページ</router-link>
        </nav>
        <router-view></router-view>
    </div>
</template>
<script>
export default {
    name: "App",
};
</script>
<style scoped>
.app-container {
    padding: 20px;
}
nav {
    margin-bottom: 20px;
}
nav a {
    margin-right: 15px;
}
</style>

views/About.vue


<template>
  <div class="page-content">
      <h1>Aboutページ</h1>
      <p>これはAboutページのコンテンツです。</p>
  </div>
</template>
<script>
export default {
    name: "AboutPage",
};
</script>
<style scoped>
.page-content {
    border: 1px solid #ddd;
    padding: 15px;
    border-radius: 4px;
}
</style>

views/Home.vue


<template>
    <div class="page-content">
        <h1>Homeページ</h1>
        <p>これはHomeページのコンテンツです。</p>
    </div>
</template>
<script>
export default {
    name: "HomePage",
};
</script>
<style scoped>
.page-content {
    border: 1px solid #ddd;
    padding: 15px;
    border-radius: 4px;
}
</style>

タグ: vue.js VueRouter ルーティング フロントエンド SPA

5月22日 07:51 投稿