はじめに
laravel sailを使ってlaravel10 + vue3.js + postgresSQL環境を作る
laravel sailで作成した環境にVue Router4を導入する方法を記載します。
Vue Routerとは
Vue.js公式のルーターです。
環境
- WSL2
- DockerDesktop
- laravel10
- sailと入力するだけでSailコマンドを実行できるように設定済
- Vue3.js
インストール
以下を実行し、Vue Router4をインストールします。
sail npm install --save-dev vue-router@4
表示するvueファイルの作成
resources/js
にてviews
ディレクトリを作成し、その中に試しに表示するAboutView.vue
ファイルを作成します。
<template>
<h1>About</h1>
</template>
<script>
export default {
name: "AboutView",
};
</script>
index.jsファイルの作成
resources/js
にてrouter
ディレクトリを作成し、その中にindex.js
ファイルを作成します。
import { createRouter, createWebHistory } from "vue-router";
import AboutView from "../views/AboutView.vue";
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/about",
name: "about",
component: AboutView,
},
],
});
export default router;
app.jsを修正し、Vue Routerを使えるようにする
resources/js/app.js
を以下のように修正します。
import "./bootstrap";
import { createApp } from "vue";
import App from "./App.vue";
+ import router from "./router";
const app = createApp(App);
+ app.use(router).mount("#app");
- app.mount("#app");
App.vueにrouter-viewを読み込ませる
resources/js/App.vue
を以下のように書き換えます。
<template>
<router-view />
</template>
web.phpの修正
このまま、http://localhost/about
へアクセスすると、404エラーとなってしまいます。
これは、laravelにて、http://localhost/
以外のルーティングが設定されていないからです。
routes/web.php
を以下のように書き換えます。
Route::get('/{any}', function () {
return view('app');
})->where('any', '.*');
whereメソッドを使用して正規表現でany
を0文字以上とマッチするよう制約します。
(/
以下に何もなくても、何かが入ってもOKとなる)
再度http://localhost/about
へアクセスすると、resources/js/views/AboutView.vue
で設定した通りに表示されました!