bladeファイルにコンポーネント追加する
ちゃっかりCompositionAPIを導入
1. はじめに
●●.blade.phpにコンポーネントを追加するという形でVue.jsを取り入れてみる。しかもVue.jsはCompositionAPIで書くこととする。ここでは、CompositionAPIの書き方自体の言及はしないが、その環境の整え方についてまとめておく。
2. CompositionAPIを使うために
▼resources/assets/js/app.js
require('./bootstrap');
import { createApp } from 'vue'
import App from './components/App.vue'
createApp({
components: {
App
}
}).mount('#app')
3.コンポーネント追加のイメージ
■ ルーティング
▼ views/listings/vue
Route::get('/','ListingsController@index');
■ コントローラー
▼ app\Http\Controllers\ListingsController.php
public function index(){
return view('listings.index');
}
■ ビュー
▼ resources\views\listings\index.blade.php)
@extends('layouts.login')
@section('content')
<div id="app">
<App></App>
</div>
//resources/assets/js/app.jsで書いたVueの設定を読み込む
<script src="{{ asset('js/app.js') }}" defer="defer"></script>
@endsection
■ コンポーネントの呼び込み部分
※Vue3をインストール時に自動で作成されるApp.vue
のコンポーネントを使用
▼ resources\assets\js\components\App.vue
<div id="app">
<App></App>
</div>
※ 下記コードの書く場所は本記事より良い場所があるかもしれない。 @extends('layouts.login')
が
位置する共通のビューテンプレート部分に記述しても上手くVue.jsが読み込めなかったため、
index.blade.php内に記述した。
<script src="{{ asset('js/app.js') }}" defer="defer"></script>
■ コンポーネント
ここでは便宜上、簡単なコードサンプルを乗せるのみにとどめる。 ▼ resources\assets\js\components\App.vue
<template>
<div class="container">
<div>
<div>{{ message }}</div>
<div class="card">
<div class="card-header">Laravel×Vue.js</div>
<div class="card-body">
using CompositionAPI
</div>
</div>
</div>
</div>
</template>
<script>
import { ref } from "vue";
export default {
setup() {
const message = ref("Hello Vue 3");
return {
message
};
},
mounted() {
console.log('Component mounted.')
}
}
</script>
4.おわりに
Laravelのバージョンがやや古くともLaravel8でVue 3を使うが参考になる。もし、LaravelにVue.jsをインストールした後に軽く動作確認をしたい場合は参考になるだろう。