Vue

【Vue.js 2.9】はじめてのVue Router リダイレクト・エイリアス

・リダイレクトとエイリアスの記述方法の紹介

はじめに

今回はリダイレクトやエイリアスのVue Routerでの書き方の紹介となります。

【Vue.js 2.9】はじめてのVue Router 環境構築・HelloWorld出力 ・Vue.jsでSPAを構築するのに特化した公式ライブラリの紹介・環境構築とページにHelloWorld出力 はじめに 今...

環境情報

名前詳細
Vue.js開発バージョン(https://unpkg.com/vue/dist/vue.js
Vue Router開発バージョン(https://unpkg.com/vue-router/dist/vue-router.js
エディタVSCode(https://code.visualstudio.com/

リダイレクト

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Redirect - Vue Router</title>
  </head>
  <body>
    <div id="app">
      <router-link to='/'>Home</router-link> /
      <router-link to='/a'>A</router-link> /
      <router-link to='/b'>B</router-link>
      <router-view></router-view>
    </div>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
      const B = {
        template: '<div><h1>BBB</h1></div>'
      }
      const router = new VueRouter({
        routes: [
          {
            path: '/a',
            redirect: {name: 'page-b'}
          },
          {
            name: 'page-b',
            path: '/b',
            component: B
          }
        ]
      })
      const app = new Vue({
        router
      }).$mount('#app')
    </script>
  </body>
</html>

画像だと分かりにくいですが、Aのリンクを押したらBにリダイレクトされました。
この場合、URLは「/a」ではなくリダイレクト先の「/b」となります。

Vue側のリダイレクトの定義は24行目の「redirect: {name: ‘page-b’}」です。
「/a」のリンクに対して、名前付きルート「page-b」にリダイレクトされます。

エイリアス

<!DOCTYPE html>
<html>
 <head>
   <meta charset="UTF-8">
   <title>Alias - Vue Router</title>
 </head>
 <body>
   <div id="app">
     <router-link to="/">Home</router-link>
     <router-link to="/a">A</router-link>
     <router-link to="/b">B</router-link>
     <router-view></router-view>
   </div>
   <script src="https://unpkg.com/vue/dist/vue.js"></script>
   <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
   <script>
     const A = {
       template: '<div><h2>AAA</h2></div>'
     }
     const router = new VueRouter({
       routes: [
         {
           path: '/a',
           component: A,
           alias: '/b'
         }
       ]
     })
     const app = new Vue({
       router
     }).$mount('#app')
   </script>
 </body>
</html>

画像だと分かりにくいですが、Bのリンクを押したらAのコンポーネントが表示されます。
ただし、リダイレクトと違いURLは「/b」のままです。

エイリアスの設定は25行目の「alias: ‘/b’」のみです。

参考記事

公式ページ
https://router.vuejs.org/ja/guide