Inertia.js
Inertia.js permite crear aplicaciones de pagina unica (SPA) usando frameworks frontend como Vue.js, React o Svelte, mientras se mantiene el routing y los controladores de Laravel en el backend. No necesitas crear una API.
Flujo de trabajo
// Controlador Laravel (igual que siempre)
class PostController extends Controller
{
public function index(): \Inertia\Response
{
return Inertia::render('Posts/Index', [
'posts' => Post::with('author')
->latest()
->paginate(10),
'filters' => request()->only(['search', 'category']),
]);
}
public function store(StorePostRequest $request): RedirectResponse
{
Post::create($request->validated());
return redirect()->route('posts.index')
->with('success', 'Post creado correctamente.');
}
}
Componente Vue.js
<script setup>
import { Head, Link, router } from '@inertiajs/vue3'
defineProps({
posts: Object,
filters: Object,
})
</script>
<template>
<Head title="Posts" />
<div v-for="post in posts.data" :key="post.id">
<Link :href="route('posts.show', post)">{{ post.title }}</Link>
</div>
</template>
Inertia maneja automaticamente la navegacion del lado del cliente, conserva el scroll, gestiona formularios y proporciona una experiencia SPA completa. Es la base de Laravel Breeze y Jetstream con stack Inertia.