Livewire
Livewire permite crear componentes interactivos y reactivos en Laravel usando exclusivamente PHP y Blade, sin necesidad de escribir JavaScript. Es una alternativa a los frameworks SPA como Vue.js o React.
Crear un componente
php artisan make:livewire SearchPosts
class SearchPosts extends Component
{
public string $search = '';
public string $category = '';
public function render(): View
{
$posts = Post::query()
->when($this->search, fn ($q) => $q->where('title', 'like', "%{$this->search}%"))
->when($this->category, fn ($q) => $q->where('category', $this->category))
->latest()
->paginate(10);
return view('livewire.search-posts', compact('posts'));
}
}
Vista del componente
<div>
<input type="text" wire:model.live.debounce.300ms="search" placeholder="Buscar...">
<select wire:model.live="category">
<option value="">Todas</option>
<option value="laravel">Laravel</option>
<option value="php">PHP</option>
</select>
@foreach($posts as $post)
<article wire:key="{{ $post->id }}">
<h3>{{ $post->title }}</h3>
</article>
@endforeach
{{ $posts->links() }}
</div>
Livewire 3 incluye soporte para navegacion SPA (wire:navigate), lazy loading, teleport y una integracion nativa con Alpine.js. Es ideal para aplicaciones que quieren interactividad sin la complejidad de un frontend separado.