理系公務員のプログラミング日記

【Laravel8×Vue3】Vue Routerによるルーティングの設定

タグ:
Laravel
Vue.3

Vue Router をLaravel + Vueアプリに導入する

Vue.jsで複数ページを作る際にはvue-routerの利用が鉄板です。

vue3 + laravel8でのアプリケーションでvue-routerを導入していきます。

インストール

npm によるインストールを行う時には、-Dを追加してください。

これを追加することで、開発用のパッケージであることを宣言できます。

本番サーバにデプロイする際には、vueに関するファイルはjavascriptにビルドされる(変換される)ので不要になります。

vue3に対応したvue-routerはver4以降なので、vue-router@nextでインストールします。

npm install -D vue-router@next

router.jsの作成

resources/js/router.js

import {createRouter, createWebHistory} from 'vue-router' // 必要なコンポーネントをインポート import HelloWorld from './components/HelloWorld' export const router = createRouter({ history: createWebHistory(), routes: [ // 必要な数だけ書く { path: '/', name: 'index', component: HelloWorld, }, { path: '/hello', // nameには一意な名前をつける name: 'hello', component: HelloWorld, } ] }) export default router

app.jsの編集

VueRouterの利用することをapp.jsに記載します。

resources/js/app.js

import { createApp } from 'vue' import App from './App.vue' import { router } from './router' createApp(App) .use(router) .mount('#app')

App.vueの編集

VueRouterに記載したい内容を追加したい場所にrouter-viewタブで指定します。

こうすることで、全ての画面で共通の内容とURIによって表示を変更したい内容を区別することができます。

resourve/js/App.vue

<template> <div> {{ data.message }} <hr> <router-view></router-view> </div> </template> <!-- 略 -->

ここまでは、Vueのみの時の使い方とほとんど同じでした。

Laravelのルーティングの編集

最後にLaravelのweb.phpに書き内容を追加します。

web.php

Route::get('/{any}', function () { return view('welcome'); })->where('any','.*');

これはどのURIにアクセスしても(any)、LaravelからVueへの橋渡しになるwelcome.blade.phpファイルを指定するものになります。

URIによるルーティングはVueRouter側で行いたいので、Laravel側ではこのような設定を基本的には利用します。