Vue Routerの導入と基本的な使い方
Vue Routerの導入と基本的な部分をまとめました。Vueのドキュメントは詳しくて素晴らしいのですが、初学の方には少し省略されている部分が多い気がしたので、それぞれの要素レベルにまで落とし込んで解説してみました。
公開日:2019年4月9日
インストール
詳しくは公式サイトをどうぞ。
今回は、npmでインストールして、vue cliでプロジェクトを作ったケースで見ていきます。
読み込み(import)
main.jsでインポートします。
import Vue from 'vue' # Vueをロード
import App from './App.vue' # メインのVueテンプレート
import router from './router' # routerの実行&ルート設定ファイル
Vue.config.productionTip = false
new Vue({
router, # Vueインスタンスにrouterを追加
render: h => h(App)
}).$mount('#app')
main.jsはこのままコピペで大丈夫です。
Routeを書く
続いて、router.jsにルートを書いていきます。
vue uiとかでインストールした場合は、サンプルルートがすでに書き込まれているはずです。
import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import Foo from './views/Foo.vue'
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/foo',
name: 'foo',
component: Foo
},
{
path: '/about',
name: 'about',
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
}
]
})
それぞれのコードの詳細を見ていきます。
import
router.jsでは、まずVueとVueRouterを読み込んでます。
import Vue from 'vue'
import Router from 'vue-router'
読み込み元のmain.jsでもVue.jsを読み込んでますが、Vue Router側でも読み込みが必要です。
次に読み込んでいるのがViewコンポーネントです。
import Home from './views/Home.vue'
import Foo from './views/Foo.vue'
これで、Home.vue、Foo.vueは、それぞれHome、Fooという名前で読み出すことができます.
Aboutコンポーネントは、router側でimportする例となっています。
Vue Routerの登録
続いて、Vue Routerの登録をします。
Vue.use(Router)
これだけでOKです。
詳細なルート設定
最後に、ルートの詳細設定をします。
フォーマットは、
export default new Router({
キー: バリュー,
})
です。
historyモード
SPAアプリとしてリリースする場合は、URLを意識しないといけないため、historyモードが必須です。
mode: 'history'
この設定をすると、URLが
example.com/#/about
ではなく、
example.com/about
と、ハッシュを覗いた通常のURLのような形になります。こうすることで、Google Botにもルーティングさせたページが認識されます。
Cordovaなどを使ったネイティブアプリにする場合は、この設定は必須ではありません。
ルーティング
続いて、個々のルーティングを書きます。
書き方は、「routes: 配列」が基本です。
routes: []
配列の中身は、jsonフォーマットの連想配列です。
routes: [
{
path: '/', #URLパス。ブラウザの表示URLになります
name: 'home', #ルーティング名
component: Home #読み込むコンポーネント名です
},
componentの引数であるコンポーネント名は、先ほどのimportで読み込んだものだけが指定できます。新たに追加したい場合は、importを増やします。
component部分は、直接関数を書くこともできます。
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
メインコンポーネントでルートを指定する
最後に、メインコンポーネントでルートを指定します。
今回は、App.vueというファイルが全体のフレームを統括するメインコンポーネントになっている前提とします。
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link> |
<router-link to="/foo">Foo</router-link> |
</div>
<router-view/>
</div>
</template>
ルートの書き方
<router-link to="/">Home</router-link>
という感じで、toの引数に普通にURL形式でかけばOKです。引数には、router.jsで指定したnameを書くこともできます。
<router-link to="Home">Home</router-link>
変数を与えることもできます。
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
引数の設定は、詳しくは公式ドキュメントをどうぞ。
コンポーネントの描画
<router-view/>
でrouterで指定したコンポーネントを描画できます。
router-viewの中身は、router.jsで指定したコンポーネントが動的に切り替わるので、値を指定する必要はありませんが、引数で直接コンポーネントを指定することも出来ます。
<router-view name="helper"/>
今回の例では、App.vueにルーターリンクを書いているので、どのURLでも上部にリンクが表示されます。
サイトのグローバルリンクなどはこうした方式を取るのが良さそうですね。
Vue Routerの導入から基本的な使い方をみてきました。
パッと見ると「うわ、なんか設定がいっぱいあるな」と思いますが、分解してみていくと、かなりシンプルで柔軟な作りだとわかりますね。
ルーティングができると、ぐっとWebアプリ感が出てきて作るのが楽しくなるので、ぜひ使ってみてください。
新着ノート
-
NUXT3
公開日:2023年2月16日
-
NUXT3
公開日:2023年1月30日
新着コード
-
Vue.js
公開日:2022年4月18日
-
Vue.js
公開日:2022年4月13日