Laravel11とVue3の連携方法:カウンタを作ってみる

LaravelとVue連携

Laravel11とVue3の連携方法を解説します。

LaravelとVueを連携させたいときに、参考にしてください♪

Laravel11とVue3の連携方法:カウンタを作ってみる

まずは、Laravelのプロジェクトを作成します。

Laravelプロジェクト作成&Breeze認証インストール

Laravelのプロジェクト作成方法は色々ありますが、今回はxampp(ザンプ)を使いました。

下記コマンドでプロジェクトを作ります。

Breezeライブラリをインストールします。

php artisan serve コマンドを実行して、開発サーバーを立ち上げます。また、

npm run devを実行して、Vite開発サーバーを立ち上げます。

インストールについて、詳細は下記ご覧ください。

プラグインのインストール

次に下記コマンドを実行して、プラグインをインストールします。

vite.config.jsの変更

vite.config.jsファイルに、下記のようにコードを追加します。

【vite.config.js】

Vueのエイリアスを vue/dist/vue.esm-bundler.js に設定することで、開発時にVueのテンプレートをリアルタイムでコンパイルできます。

Vueファイルの作成

resources/jsの中に、componentsを作り、その中に、TestComponent.vueファイルを作ります。下記のコードをいれます。今回は従来のOptions APIでコードを書きました。

【TestComponent.vue】

app.jsの変更

resoures/js/app.jsの中に、下記のコードを追加します。

【app.js】

app id属性の設定

resources/views/layouts/app.blade.phpの中のbody開始タグの中に、id=”app”を追加します。

【app.blade.php】

Vueファイル埋め込みの設定

作成したビューファイルは、ダッシュボードファイルの中に埋め込みます。resources/views/dashboard.blade.phpの中に、<test-component></test-component>コードを追加します。

【dashboard.blade.php】

ブラウザで確認

ブラウザで動作を確認します。まず、/registerでユーザー登録します。ログイン後のダッシュボードで、次のようにカウンタが表示されます。

ボタンをクリックすると、数字が増えていくのを確認してください。

もしロゴが大きく表示される場合には、vite.config.jsに下記を加えます。

追記:Property “open” was accessed during render but is not defined on instanceエラー対策

上記の手順でコードを入力すると、コンソールに下記エラーがでます。

“Property “open” was accessed during render but is not defined on instance”
「プロパティ “open” がレンダリング中にアクセスされましたが、インスタンス上で定義されていません」

これは、body タグ内にid=”app”をいれたためです。bodyタグにid=”app”をいれると、body全体がVue.jsの管理下に入ります。

ですがLaravelには、デフォルトでlayouts/navigation.blade.php内にAlpine.jsのコードが組み込まれています。具体的には、下記コードです。

このコードがVue.jsのインスタンス内で不適切に解釈され、エラーになってしまいます。

コンソールエラーを消したい場合は、今回であれば、app.blade.phpではなく、dashboard.blade.phpファイル内のdivタグの中にid=”app”を設定しましょう。

これにより、Vue.js と Alpine.js のコードが干渉せず、それぞれが独立して機能するようになります。

【dashboard.blade.php】

さいごに

以上、LaravelとVue連携について解説しました。

今回はプロジェクトの一部でVue.jsを使いました。プロジェクト全体でVueをメインに使いたい場合には、イナーシャというライブラリが便利です。

なお「Vue.jsを覚えるのは面倒」という場合には、Livewireがおすすめです。
Livewireを使うと、blade.phpファイルに記述しつつ、Vue.jsのような機能を搭載できます。ご興味あれば、Livewireの記事も見てみてください。

Vue.jsやLivewireを取り入れることで、Webアプリにインタラクティブな機能を追加できます。必要な時に、取り入れてみてくださいね。

 

LaravelとVue連携

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

 

Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
デプロイ講座付。StripeやChatGPT連携など過去10回分のセミナー動画視聴可能。

Laravel実践スキルをのばしたい方におすすめです。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました