Inertia.js para PHP: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Inertia.js para PHP: guia completo com exemplos práticos

1. O que é e para que serve

Inertia.js não é um framework nem uma biblioteca para criar SPAs (Single Page Applications) no sentido clássico. É mais uma "ponte" ou "adaptador" que permite criar aplicações modernas de página única usando um framework server-side tradicional (no nosso caso, Laravel com PHP) e qualquer framework front-end moderno (React, Vue.js ou Svelte) sem a necessidade de escrever uma API REST separada.

O principal problema que o Inertia.js resolve é eliminar a abordagem tradicional de "servidor renderiza HTML" ou "servidor retorna JSON e o front-end decide o que desenhar". Em vez disso, o Inertia oferece um terceiro caminho: você escreve os controllers em PHP como de costume, mas em vez de retornar um template Blade ou uma resposta JSON, você retorna uma resposta Inertia com os dados e o nome do componente. O Inertia no cliente (JavaScript) intercepta essa resposta, encontra o componente correto (React/Vue) e o renderiza, injetando os dados recebidos. A navegação entre páginas acontece sem recarregamento completo, como em um SPA, mas todo o roteamento e a lógica de negócios permanecem no servidor.

Por que usar isso? Primeiro, simplifica drasticamente a arquitetura: você não precisa manter duas aplicações separadas (backend API e frontend SPA) com lógica de autenticação e validação duplicada. Segundo, mantém todas as vantagens do Laravel (ORM Eloquent, componentes Blade para e-mails, Artisan, middleware) e todas as vantagens do React/Vue (reatividade, abordagem de componentes, ecossistema enorme). Terceiro, proporciona uma excelente Experiência do Desenvolvedor (DX): você trabalha em um único repositório, usa um único roteador (Laravel), e o Inertia gerencia de forma transparente o estado da aplicação no cliente.

2. Instalação

A instalação tem duas partes: servidor (PHP) e cliente (JavaScript). Presume-se que você já tenha o Laravel instalado (versão 8, 9, 10 ou 11).

Passo 1: Instalação do pacote servidor (PHP)

Execute no terminal na raiz do seu projeto Laravel:

composer require inertiajs/inertia-laravel

Passo 2: Instalação do adaptador cliente (JavaScript)

Escolha seu framework front-end e execute o comando correspondente:

Para React:

npm install @inertiajs/react react react-dom

Para Vue 3:

npm install @inertiajs/vue3 vue

Para Svelte:

npm install @inertiajs/svelte svelte

Passo 3: Publicar configuração (opcional)

php artisan vendor:publish --provider="Inertia\ServiceProvider"

Passo 4: Configurar o template raiz

Crie o arquivo resources/views/app.blade.php com o seguinte conteúdo:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>@yield('title', config('app.name'))</title>
    @viteReactRefresh
    @vite(['resources/js/app.jsx'])
    @inertiaHead
</head>
<body>
    @inertia
</body>
</html>

A diretiva @inertia é o local onde o Inertia irá inserir sua aplicação. @inertiaHead serve para gerenciar os títulos a partir dos componentes.

Passo 5: Configurar o Vite (se estiver usando Vite)

No arquivo vite.config.js, adicione o plugin para React ou Vue:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import react from '@vitejs/plugin-react'; // ou @vitejs/plugin-vue

export default defineConfig({
    plugins: [
        laravel({
            input: 'resources/                    

Recommendations