3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

qnoteAdvent Calendar 2021

Day 21

Livewireを触ってみた感想

Last updated at Posted at 2021-12-20

Laravel8から加わったLivewireを少し触ってみたので個人的に良いと思ったところを書いてみます。

Livewireとは

公式サイトはこちら
PHPのみで動的コンポーネントを作成できることが特徴で、Laravel8の認証機能のうちの一つである、Jetstreamを使うためのライブラリです。

すごいと思ったところ

jsを書かなくても動的コンポーネントができる

動的コンポーネントといったら、vueやreactといったJavascriptでしか実現が難しいものかと思いきや、なんとLivewireではPHPのみで作成ができます。

LaravelのBlade構文をそのまま使える

Livewire用の構文も多数存在するので学習コストはもちろん0ではありませんが、Blade構文をそのままに使えるのはとても魅力的に感じます。

試してみる

それでは実際に例で見てみます。

composer require livewire/livewire
welcome.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Livewire</title>
    @livewireStyles
</head>
<body>
    @livewireScripts
</body
</html>

インストールが完了したら、headタグの最後とbodyタグの閉じる直前に@livewireScriptsと記述します。
次にコンポーネントを作成します。
コンポーネントは、php artisan make:livewireで作成できます。
今回は弊社猫社員を呼ぶ簡単なアプリを作るのでまずは猫コンポーネントを作成します。

php artisan make:livewire cat

App/Http/Livewire/ に Cat.php と、resources/views/livewire/ に cat.blade.php が作成されました。

Cat.php
<?php

namespace App\Http\Livewire;

use Livewire\Component;

class Cat extends Component
{
    public $cat = '呼んでみる?';
    public $count = 3;

    public function call()
    {
        $cats = [
            'ふたば「にゃぁ」',
            'みるく「アオォォーーー」',
            'はな「みゃーーぅ」',
            'ちまき「オアーーーーーー!!!」',
            'さくら「モガ」',
            'りぼん「ミャア」',
            'みい「めえええ」',
            'ちゃこ「ワーォ」',
            'ごまお「ニャーーン!!!」',
        ];

        $randKey = array_rand($cats, 1);
        $this->count--;
        $this->cat = $cats[$randKey];
    }

    public function render()
    {
        return view('livewire.cat');
    }
}

cat.blade.php
<div>
    <h1>猫を呼ぼう!</h1>
    <h2>{{ $cat }}</h2>
    @if($count > 0)
    <p><button wire:click="call">呼ぶ</button></p>
    @else
    <p><button>仕事しましょう</button></p>
    @endif
</div>
welcome.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Livewire</title>
    @livewireStyles
</head>
<body>
    <livewire:cat>
    @livewireScripts
</body
</html>

cat.gif

<livewire:コンポーネント名>でコンポーネントをレンダリングできます。

フロントとバックの繋ぎ込みはLivewireがうまい具合にやってくれるので、特に何も記述しなくてもボタンをクリックするごとにPOST送信されています。
スクリーンショット 2021-12-15 22.24.09.png

##まとめ
本当にごく一部分のみの紹介となりましたが、Livewireとても良いと思います!
LaravelユーザーでもサクッとSPAを作ることができます。
今後の盛り上がりに期待します!

##参考記事
https://reffect.co.jp/laravel/laravel-livewire

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?