【Laravel8×Vue3】Vue Routerによるルーティングの設定
タグ:
Laravel
Vue.3
Vue Router をLaravel + Vueアプリに導入する
Vue.jsで複数ページを作る際にはvue-routerの利用が鉄板です。
vue3 + laravel8でのアプリケーションでvue-routerを導入していきます。
インストール
npm によるインストールを行う時には、
これを追加することで、開発用のパッケージであることを宣言できます。
本番サーバにデプロイする際には、vueに関するファイルはjavascriptにビルドされる(変換される)ので不要になります。
vue3に対応したvue-routerはver4以降なので、
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ファイルを指定するものになります。