{"id":54758,"date":"2022-11-07T08:02:48","date_gmt":"2022-11-07T11:02:48","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=54758&#038;post_type=knowledgebase&#038;preview_id=54758"},"modified":"2025-10-01T17:03:03","modified_gmt":"2025-10-01T20:03:03","slug":"inertia-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/","title":{"rendered":"O Guia Definitivo para Inertia.js"},"content":{"rendered":"<p>Os aplicativos de p\u00e1gina \u00fanica (SPA) tornaram-se a maneira moderna de criar aplicativos da Web, e o Inertia.js \u00e9 a principal ferramenta que permite aos desenvolvedores criar SPAs com renderiza\u00e7\u00e3o do lado do cliente e do lado do servidor.<\/p>\n<p>Neste artigo, veremos como o Inertia facilita a cria\u00e7\u00e3o do SPA e resolve muitos outros problemas para os desenvolvedores. Tamb\u00e9m abordaremos os principais funcionalidades da ferramenta.<\/p>\n<p>Mas antes de come\u00e7armos, primeiro vamos nos certificar de que entendemos como os aplicativos do lado do servidor e do lado do cliente funcionam.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>O que \u00e9 renderiza\u00e7\u00e3o do lado do servidor?<\/h2>\n<p>Renderiza\u00e7\u00e3o do lado do servidor (SSR) \u00e9 quando um aplicativo pode renderizar ou exibir o conte\u00fado da p\u00e1gina de internet no servidor em vez do navegador. Quando um usu\u00e1rio tenta visitar o site<strong> exemplo.com<\/strong>, o navegador faz um pedido ao servidor solicitando todas as informa\u00e7\u00f5es necess\u00e1rias para exibir esta p\u00e1gina de internet espec\u00edfica, e o servidor responde instantaneamente fornecendo ao navegador uma p\u00e1gina totalmente renderizada.<\/p>\n<p>Os mecanismos de pesquisa interv\u00eam e indexam as informa\u00e7\u00f5es fornecidas pelo servidor antes que elas cheguem ao navegador; conhecido como Search Engine Optimization (SEO). O navegador ent\u00e3o resolve o conte\u00fado JavaScript, e a p\u00e1gina de internet \u00e9 exibida para o usu\u00e1rio.<\/p>\n<figure id=\"attachment_133545\" aria-describedby=\"caption-attachment-133545\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-133545 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/server-side-rendering-diagram.png\" alt=\"Exibindo conte\u00fado renderizado no lado do servidor.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133545\" class=\"wp-caption-text\">Exibindo conte\u00fado renderizado no lado do servidor.<\/figcaption><\/figure>\n<p>O problema com a abordagem SSR \u00e9 que leva muito tempo para carregar uma p\u00e1gina totalmente renderizada do servidor, o que n\u00e3o oferece uma experi\u00eancia agrad\u00e1vel para o usu\u00e1rio. Esta \u00e9 a raz\u00e3o pela qual os desenvolvedores consideram SPAs e renderiza\u00e7\u00e3o do lado do cliente.<\/p>\n\n<h2>O que \u00e9 renderiza\u00e7\u00e3o do lado do cliente?<\/h2>\n<p>A renderiza\u00e7\u00e3o do lado do cliente permite que o navegador tenha tudo o que precisa para renderizar a p\u00e1gina de internet do lado do cliente ao inv\u00e9s de receber uma p\u00e1gina totalmente renderizada do servidor. Quando a p\u00e1gina \u00e9 carregada, o navegador n\u00e3o envia nenhuma outra solicita\u00e7\u00e3o ao servidor, tornando a experi\u00eancia de navega\u00e7\u00e3o extremamente r\u00e1pida.<\/p>\n<figure id=\"attachment_133546\" aria-describedby=\"caption-attachment-133546\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-133546 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/client-side-rendering-diagram.png\" alt=\"Exibindo conte\u00fado renderizado do lado do cliente.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133546\" class=\"wp-caption-text\">Exibindo conte\u00fado renderizado do lado do cliente.<\/figcaption><\/figure>\n<p>A renderiza\u00e7\u00e3o do lado do cliente ajudou na cria\u00e7\u00e3o de SPAs, revolucionando a internet. Voc\u00ea pode criar sites que n\u00e3o exijam recarregamento de p\u00e1gina, independentemente do n\u00famero de links. Isso facilita para os usu\u00e1rios navegar em seu site.<\/p>\n<p>Embora os SPAs sejam fant\u00e1sticos, esta abordagem tem muita complexidade e quest\u00f5es que iremos cobrir hoje. Inertia aborda a maioria dessas quest\u00f5es utilizando efetivamente frameworks do lado do servidor. Ela combina as melhores funcionalidades tanto dos aplicativos do lado do servidor quanto dos aplicativos do lado do cliente.<\/p>\n<h2>O que \u00e9 Inertia.js?<\/h2>\n<p>Inertia n\u00e3o \u00e9 um <a href=\"https:\/\/kinsta.com\/pt\/blog\/bibliotecas-javascript\/\">framework JavaScript<\/a>. Ao inv\u00e9s disso, \u00e9 uma estrat\u00e9gia ou t\u00e9cnica para desenvolver SPAs. Ele permite o desenvolvedor utilizar as frameworks atuais do lado do servidor para construir um SPA moderno sem a complexidade que vem com ele.<\/p>\n<p>Inertia foi projetada para acompanhar, n\u00e3o para substituir, as frameworks que voc\u00ea j\u00e1 usa. Considere um aliado \u00fatil que o auxilia a completar tarefas de forma mais r\u00e1pida e eficiente. Atualmente ele suporta tr\u00eas frameworks frontend (Vue, React e Svelte) para renderiza\u00e7\u00e3o do lado do cliente e dois frameworks backend (Laravel e Rails) para renderiza\u00e7\u00e3o do lado do servidor.<\/p>\n<p>Para a maioria dos <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-laravel\/\">desenvolvedores de Laravel<\/a>, Inertia \u00e9 uma das t\u00e9cnicas mais confi\u00e1veis para a constru\u00e7\u00e3o de SPAs, uma vez que permite que eles conectem ambas as frameworks frontend e backend.<\/p>\n<h2>Como Inertia.js funciona?<\/h2>\n<p>Inertia \u00e9 similar ao Vue Router, pois ele permite que voc\u00ea se mova entre as p\u00e1ginas sem ter que recarregar a p\u00e1gina inteira. Entretanto, Inertia funciona em sincronia com o seu framework do lado do servidor. Isto \u00e9 poss\u00edvel com <code>Link<\/code>, um wrapper para a etiqueta padr\u00e3o da \u00e2ncora. Quando um <code>Link<\/code> \u00e9 clicado, Inertia intercepta o evento do clique e envia uma solicita\u00e7\u00e3o XHR para o servidor, fazendo com que o servidor reconhe\u00e7a que esta \u00e9 uma solicita\u00e7\u00e3o Inertia e retorne uma resposta JSON. Essa resposta inclui o nome e os dados do componente JavaScript, ap\u00f3s o que Inertia remove magicamente os componentes desnecess\u00e1rios e os substitui pelos necess\u00e1rios para visitar a nova p\u00e1gina e atualizar o estado do hist\u00f3rico.<\/p>\n<h3>Uma vis\u00e3o detalhada sobre a funcionalidade do Inertia.js<\/h3>\n<p>Quando um visitante visita inicialmente o site<strong> exemplo.com<\/strong>, o navegador executa uma solicita\u00e7\u00e3o padr\u00e3o de p\u00e1gina inteira, e o servidor retorna uma resposta HTML completa como se o Inertia n\u00e3o existisse. Esta resposta HTML tem todos os recursos do site (CSS, JavaScript), mas tamb\u00e9m cont\u00e9m um recurso extra para Inertia, o qual \u00e9 a raiz <code>div<\/code> com o atributo <code>data-page<\/code> contendo dados JSON para a p\u00e1gina inicial. Inertia ent\u00e3o usa esses dados JSON para dar o pontap\u00e9 inicial da framework do frontend e exibir a p\u00e1gina inicial.<\/p>\n<figure id=\"attachment_133547\" aria-describedby=\"caption-attachment-133547\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-133547 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/Inertia-visit-initial-page.png\" alt=\"Inertia.js: Resposta da p\u00e1gina inicial de visita.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133547\" class=\"wp-caption-text\">Inertia.js: Resposta da p\u00e1gina inicial de visita.<\/figcaption><\/figure>\n<p>Assim que o aplicativo for inicializado, cada rota que o usu\u00e1rio visitar dentro do mesmo dom\u00ednio usando <code>Link<\/code> ser\u00e1 uma solicita\u00e7\u00e3o XHR com o cabe\u00e7alho <code>X-Inertia<\/code>. Isso diz ao servidor que esta \u00e9 uma solicita\u00e7\u00e3o do Inertia.<\/p>\n<p>O feedback vir\u00e1 como uma resposta JSON com o conte\u00fado da p\u00e1gina, ao inv\u00e9s de uma resposta HTML completa, como na visita inicial.<\/p>\n<figure id=\"attachment_133548\" aria-describedby=\"caption-attachment-133548\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-133548 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/Inertia-visit-route-in-the-same-domain.png\" alt=\"Inertia.js: Resposta de visita de rota subsequente.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133548\" class=\"wp-caption-text\">Inertia.js: Resposta de visita de rota subsequente.<\/figcaption><\/figure>\n<h2>Que problemas Inertia.js resolve?<\/h2>\n<p>Inertia resolve um grande n\u00famero de problemas para desenvolvedores web. O objetivo de criar o\u00a0 Inertia era dar solu\u00e7\u00f5es r\u00e1pidas e efetivas para toda a complexidade que vem com o projeto de um SPA.<\/p>\n<h3>Complexidades do SPA<\/h3>\n<p>Se os desenvolvedores constru\u00edssem um SPA sem Inertia, eles precisariam criar APIs REST ou GraphQL e proteg\u00ea-las com algum tipo de m\u00e9todo de autentica\u00e7\u00e3o, o que exigiria a cria\u00e7\u00e3o de um sistema frontend de gerenciamento de estado, entre muitas outras coisas.<\/p>\n<p>Inertia foi projetado para ajudar os desenvolvedores a transformar seus aplicativos do lado do servidor rodando completamente no servidor backend para um aplicativo JavaScript de uma \u00fanica p\u00e1gina sem ter que passar por todas as complexidades que v\u00eam com a constru\u00e7\u00e3o de SPAs.<\/p>\n<p>Criar um SPA usando Inertia \u00e9 similar ao criar um aplicativo renderizado no lado do servidor. Voc\u00ea cria controladores, faz consultas ao banco de dados para os dados requeridos e ent\u00e3o retorna os resultados para as visualiza\u00e7\u00f5es.<\/p>\n<p>A chave \u00e9 que as visualiza\u00e7\u00f5es s\u00e3o componentes JavaScript. Isso significa que voc\u00ea recebe os dados do servidor, ent\u00e3o Inertia trabalha com o framework frontend para mostrar a p\u00e1gina contendo os dados como um arquivo JavaScript, eliminando a necessidade de criar APIs.<\/p>\n<h3>Autentica\u00e7\u00e3o<\/h3>\n<p>Como o Inertia alimenta o aplicativo com dados e respostas do backend, ele simplesmente usar\u00e1 qualquer sistema de autentica\u00e7\u00e3o que voc\u00ea tenha no lado do servidor. Isso significa que voc\u00ea n\u00e3o ter\u00e1 que se preocupar com a autentica\u00e7\u00e3o do lado do cliente \u2014 voc\u00ea ter\u00e1 um sistema de autentica\u00e7\u00e3o baseado em sess\u00e3o que se sincroniza com o seu sistema de autentica\u00e7\u00e3o do lado do servidor.<\/p>\n<h3>Preocupa\u00e7\u00f5es com SEO<\/h3>\n<p>Como explicado anteriormente para renderiza\u00e7\u00e3o do lado do servidor, os mecanismos de pesquisa interceptam a resposta do servidor ao navegador para indexar o conte\u00fado HTML da p\u00e1gina de internet. No caso de um SPA, os mecanismos de pesquisa ter\u00e3o dificuldade em identificar o conte\u00fado da p\u00e1gina, j\u00e1 que o servidor responder\u00e1 com os componentes JavaScript e dados JSON.<\/p>\n<p>Mas Inertia resolveu esta preocupa\u00e7\u00e3o introduzindo o <a href=\"https:\/\/inertiajs.com\/server-side-rendering\" target=\"_blank\" rel=\"noopener noreferrer\">recurso de renderiza\u00e7\u00e3o do lado do servidor (SSR)<\/a> que voc\u00ea pode adicionar ao seu aplicativo. Inertia usa o ambiente Node.js como um gatilho para converter a resposta de dados JSON para HTML.<\/p>\n<p>Para melhor ilustrar isso, imagine Inertia sentada entre o servidor e o navegador, observando. Quando o servidor recebe um pedido de Inertia e retorna uma resposta JSON, Inertia detecta a exist\u00eancia de um servidor Node.js, transforma a resposta JSON em HTML e a retorna, permitindo que os mecanismos de pesquisa indexem a p\u00e1gina como se o aplicativo n\u00e3o fosse um SPA.<\/p>\n<p>Inertia tamb\u00e9m fornece um componente <code>Head<\/code>, que permite que voc\u00ea adicione um t\u00edtulo e meta dados \u00e0 sua p\u00e1gina:<\/p>\n<pre><code class=\"language-html\">\n&lt;script setup&gt;\nimport { Head } from '@inertiajs\/inertia-vue3'\n&lt;\/script&gt;\n\n&lt;template&gt;\n  &lt;Head&gt;\n    &lt;title&gt;Page Title&lt;\/title&gt;\n    &lt;meta name=\"description\" content=\"Page Description\" \/&gt;\n  &lt;\/Head&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Aqui est\u00e1 outro exemplo da <a href=\"https:\/\/inertiajs.com\/title-and-meta\" target=\"_blank\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o on-line do Inertia<\/a>:<\/p>\n<pre><code class=\"language-html\">\n\/\/ Layout.vue\n\nimport { Head } from '@inertiajs\/inertia-vue3'\n\n&lt;Head&gt;\n  &lt;title&gt;My app&lt;\/title&gt;\n  &lt;meta head-key=\"description\" name=\"description\" content=\"This is the default description\" \/&gt;\n  &lt;link rel=\"icon\" type=\"image\/svg+xml\" href=\"\/favicon.svg\" \/&gt;\n&lt;\/Head&gt;\n\n\/\/ About.vue\n\nimport { Head } from '@inertiajs\/inertia-vue3'\n\n&lt;Head&gt;\n  &lt;title&gt;About - My app&lt;\/title&gt;\n  &lt;meta head-key=\"description\" name=\"description\" content=\"This is a page specific description\" \/&gt;\n&lt;\/Head&gt;\n<\/code><\/pre>\n<h3>Formul\u00e1rios e Form Helper<\/h3>\n<p>\u00c9 poss\u00edvel enviar uma solicita\u00e7\u00e3o de formul\u00e1rio padr\u00e3o enquanto se utiliza o Inertia. No entanto, fazer isso resultar\u00e1 em uma atualiza\u00e7\u00e3o de p\u00e1gina inteira.<\/p>\n<p>Inertia permite que os usu\u00e1rios fa\u00e7am pedidos de formul\u00e1rios usando Inertia, eliminando a possibilidade de atualiza\u00e7\u00e3o da p\u00e1gina. Uma vez que o formul\u00e1rio \u00e9 submetido com Inertia, ele \u00e9 manipulado no lado do servidor, liberando voc\u00ea para redirecionar o usu\u00e1rio de volta para a mesma p\u00e1gina (ou para uma p\u00e1gina completamente diferente).<\/p>\n<p>Inertia facilita nossas vidas ao criar e enviar formul\u00e1rios. Aqui est\u00e1 um exemplo de como voc\u00ea pode us\u00e1-lo com o Vue.js 3 composition API:<\/p>\n<pre><code class=\"language-html\">\n&lt;script setup&gt;\n  import { useForm } from \"@inertiajs\/inertia-vue3\";\n\n  const form = useForm({\n    email: null,\n    password: null,\n  });\n&lt;\/script&gt;\n\n&lt;template&gt;\n  &lt;form @submit.prevent=\"form.post('kinsta\/login')\"&gt;\n    <!-- email -->\n    &lt;input type=\"text\" v-model=\"form.email\" \/&gt;\n    <!-- password -->\n    &lt;input type=\"password\" v-model=\"form.password\" \/&gt;\n    <!-- submit -->\n    &lt;button type=\"submit\"&gt;Login&lt;\/button&gt;\n  &lt;\/form&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Voc\u00ea pode enviar o formul\u00e1rio com <code>GET<\/code>, <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> e <code>DELETE<\/code>.<\/p>\n<pre><code class=\"language-html\">\n&lt;script setup&gt;\n  import { useForm } from \"@inertiajs\/inertia-vue3\";\n\n  const form = useForm({\n    email: null,\n    password: null,\n  });\n\n  const submit = () =&gt; {\n    form.post(\"kinsta\/login\");\n  };\n&lt;\/script&gt;\n\n&lt;template&gt;\n  &lt;form @submit.prevent=\"submit()\"&gt;\n    <!-- email -->\n    &lt;input type=\"text\" v-model=\"form.email\" \/&gt;\n    <!-- password -->\n    &lt;input type=\"password\" v-model=\"form.password\" \/&gt;\n    <!-- submit -->\n    &lt;button type=\"submit\"&gt;Login&lt;\/button&gt;\n  &lt;\/form&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>O Form Helper do Inertia tamb\u00e9m est\u00e1 oferecendo algumas propriedades \u00fateis como <code>processing<\/code> propriedade que se transforma em <code>true<\/code> uma vez que o formul\u00e1rio come\u00e7a a ser processado. Isso pode ser usado para desativar bot\u00f5es de envio enquanto o formul\u00e1rio est\u00e1 sendo processado, a fim de evitar envios m\u00faltiplos:<\/p>\n<pre><code class=\"language-html\">\n&lt;button type=\"submit\" :disabled=\"form.processing\"&gt;Submit&lt;\/button&gt;\n<\/code><\/pre>\n<p>Voc\u00ea tamb\u00e9m pode usar <code>preserveState<\/code>, <code>preserveScroll<\/code> e chamadas de retorno de eventos com o formul\u00e1rio, que ser\u00e3o \u00fateis ao adicionar op\u00e7\u00f5es adicionais ao formul\u00e1rio:<\/p>\n<pre><code class=\"language-js\">\nform.post('kinsta\/login, {\n  preserveScroll: true,\n  onSuccess: () =&gt; form.reset('password'),\n})\n<\/code><\/pre>\n<h3>Lembrando o estado com Inertia.js<\/h3>\n<p>Digamos que um usu\u00e1rio est\u00e1 preenchendo um formul\u00e1rio em seu site e decide navegar para outra p\u00e1gina antes de envi\u00e1-lo. Quando eles retornarem para a p\u00e1gina do formul\u00e1rio, a entrada do formul\u00e1rio do usu\u00e1rio ser\u00e1 redefinida.<\/p>\n<p>Felizmente, Inertia fornece o recurso <code>useRemember<\/code>, que permite salvar as entradas do formul\u00e1rio do usu\u00e1rio para o estado hist\u00f3rico e restaur\u00e1-lo na navega\u00e7\u00e3o do hist\u00f3rico.<\/p>\n<p>Voc\u00ea pode usar este recurso importando do Inertia e aplicando em seu formul\u00e1rio:<\/p>\n<pre><code class=\"language-js\">\nimport { useRemember } from '@inertiajs\/inertia-vue3'\n\nexport default {\n  setup() {\n    const form = useRemember({\n        first_name: null,\n        last_name: null,\n    })\n\n    return { form }\n  },\n}\n<\/code><\/pre>\n<p>Se voc\u00ea tem uma p\u00e1gina com muitos formul\u00e1rios que usam o recurso <code>useRemember<\/code>, cada componente deve ter uma chave \u00fanica para que Inertia saiba quais dados restaurar para cada componente:<\/p>\n<pre><code class=\"language-js\">\nconst form = useRemember({\n        first_name: null,\n        last_name: null,\n    }, 'Users\/Create')\n<\/code><\/pre>\n<p>N\u00e3o precisamos usar o recurso <code>useRemember<\/code> enquanto utilizamos o Form Helper do Inertia. O Inertia se lembrar\u00e1 do estado da entrada do formul\u00e1rio automaticamente, ent\u00e3o s\u00f3 precisamos dar um identificador \u00fanico:<\/p>\n<pre><code class=\"language-js\">\nimport { useForm } from '@inertiajs\/inertia-vue3'\n\nconst form = useForm('CreateUser', data)\n<\/code><\/pre>\n<p>O melhor desse recurso \u00e9 que voc\u00ea pode lembrar manualmente todos os dados em seu aplicativo. Isso tamb\u00e9m \u00e9 \u00fatil para passar dados de componentes aninhados para o componente principal.<\/p>\n<pre><code class=\"language-js\">\nimport { Inertia } from '@inertiajs\/inertia'\n\n\/\/ DeeplyNestedComponent.vue\nInertia.remember(data, 'my-key')\n\n\/\/ MainComponent.vue\nlet data = Inertia.restore('my-key')\n<\/code><\/pre>\n<h3>Upload de arquivos<\/h3>\n<p>Inertia detecta se o formul\u00e1rio inclui arquivos e, em caso afirmativo, transforma os dados do pedido para o objeto <code>formData<\/code>, o que \u00e9 sempre necess\u00e1rio. Ent\u00e3o, se voc\u00ea tiver um formul\u00e1rio que inclua um nome e um avatar, Inertia tratar\u00e1 o formul\u00e1rio como <code>multipart\/form-data<\/code>.<\/p>\n<h3>Valida\u00e7\u00e3o e erros<\/h3>\n<p>Quando um usu\u00e1rio submete um formul\u00e1rio com valores incorretos e ele \u00e9 enviado para o servidor para valida\u00e7\u00e3o, voc\u00ea retorna o usu\u00e1rio para a p\u00e1gina do formul\u00e1rio com um aviso de erros de valida\u00e7\u00e3o na sess\u00e3o. O Inertia captura os erros da sess\u00e3o e os salva como adere\u00e7os da p\u00e1gina.<\/p>\n<p>Como os adere\u00e7os s\u00e3o reativos, eles aparecem quando a submiss\u00e3o do formul\u00e1rio \u00e9 completada. Para que Inertia detecte a exist\u00eancia de erros, ela mant\u00e9m um olho em <code>page.props.errors<\/code>.<\/p>\n<p>Uma vez encontrados erros, ele ent\u00e3o fornece um retorno de chamada <code>onError()<\/code> ao inv\u00e9s de <code>onSuccess()<\/code>.<\/p>\n<p>Aqui est\u00e1 um exemplo com Vue 3 para ajudar voc\u00ea a entender o conceito:<\/p>\n<pre><code class=\"language-js\">\nconst submit = () =&gt; {\n    form.post(\"kinsta\/login\", {\n        onError: () =&gt; {\n            return \"Hi! , the server returned an error and Inertia saved it as a prop. Do as you like with me\"\n        },\n        onSuccess: () =&gt; {\n            return \"Wohoo!!\"\n        }\n    }\n    );\n  };\n<\/code><\/pre>\n<p>Exibir erros \u00e9 t\u00e3o f\u00e1cil quanto defini-los como adere\u00e7os e exibi-los condicionalmente em seu HTML:<\/p>\n<pre><code class=\"language-html\">\n&lt;script setup&gt;\n  defineProps({\n    errors: Object,\n  });\n\n\/\/\n&lt;\/script&gt;\n\n&lt;template&gt;\n  &lt;form @submit.prevent=\"submit()\"&gt;\n    \/\/\n    &lt;div v-if=\"errors.email\"&gt;{{ errors.email }}&lt;\/div&gt;\n  &lt;\/form&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Ao usar o Inertia, voc\u00ea n\u00e3o precisa se preocupar com dados de entrada antigos no caso de algum erro. Uma vez que o Inertia detecta que o usu\u00e1rio foi redirecionado para a p\u00e1gina com erros, ele preserva automaticamente o antigo estado do componente para <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> e <code>DELETE<\/code>.<\/p>\n<h3>Reload parciais com Inertia.js<\/h3>\n<p>A funcionalidade de recarga reload do Inertia \u00e9 simplesmente excelente, uma vez que ele apenas recarrega um componente selecionado na p\u00e1gina ao inv\u00e9s de ir buscar todo o conjunto de dados do servidor novamente. Isso leva a otimiza\u00e7\u00e3o do seu aplicativo para o pr\u00f3ximo n\u00edvel. Voc\u00ea tamb\u00e9m pode visitar o seguinte link para Saiba mais sobre como <a href=\"https:\/\/kinsta.com\/pt\/blog\/desempenho-laravel\/\">otimizar o desempenho do seu aplicativo Laravel<\/a>.<\/p>\n<p>Reload parciais podem ser realizadas usando a propriedade <code>only<\/code> do Inertia:<\/p>\n<pre><code class=\"language-js\">\nimport { Inertia } from '@inertiajs\/inertia'\n\nInertia.visit(url, {\n  only: ['users'],\n})\n<\/code><\/pre>\n<h3>Redirecionamentos externos com Inertia.js<\/h3>\n<p>O redirecionamento subdom\u00ednio, ou redirecionamento externo, \u00e9 um dos desafios mais frustrantes com SPAs. \u00c9 irracional esperar que seu aplicativo permane\u00e7a uma \u00fanica p\u00e1gina enquanto tamb\u00e9m visita um dom\u00ednio diferente.<\/p>\n<p>Pode ser necess\u00e1rio redirecionar um pedido do Inertia para um site externo ou mesmo para outro endpoint n\u00e3o Inertia em seu aplicativo. Isso \u00e9 poss\u00edvel atrav\u00e9s de uma visita ao site <code>window.location<\/code> iniciada do lado do servidor:<\/p>\n<pre><code class=\"language-php\">\nreturn Inertia::location($url);\n<\/code><\/pre>\n<p>Se voc\u00ea abrir o console durante o teste, voc\u00ea ver\u00e1 que ele retorna <code>409 conflict<\/code>. Esta resposta cont\u00e9m a URL do cabe\u00e7alho <code>X-Inertia-Location<\/code>, que Inertia detectar\u00e1 no lado do cliente e automaticamente realizar\u00e1 a visita.<\/p>\n<h2>Como trabalhar com o Inertia.js<\/h2>\n<p>Trabalhar com Inertia \u00e9 semelhante a trabalhar em um aplicativo do lado do servidor, exceto pelo fato de ser um aplicativo de p\u00e1gina \u00fanica totalmente responsivo. Voc\u00ea deve conseguir definir sua rota, personalizar seu controlador e retornar uma visualiza\u00e7\u00e3o ao Inertia para enviar \u00e0 sua framework de interface do usu\u00e1rio.<\/p>\n<h3>Rotas do Laravel e Inertia.js<\/h3>\n<p><span class=\"sw\">As rotas do Laravel n\u00e3o s\u00e3o algo que voc\u00ea deseja abrir m\u00e3o ao desenvolver seu aplicativo. Isso permite que voc\u00ea crie rapidamente as rotas mais complexas. H\u00e1 tamb\u00e9m muitos<\/span> <a href=\"https:\/\/kinsta.com\/pt\/blog\/tutoriais-laravel\/\"><span class=\"sw\">recursos gratuitos e pagos do Laravel<\/span><\/a> <span class=\"sw\">para ajud\u00e1-lo a aprender mais sobre o Laravel e como o roteamento funciona.<\/span><span class=\"sw\"><br \/>\n<\/span><span class=\"sw\"><br \/>\n<\/span><span class=\"sw\">A vantagem disso \u00e9 que voc\u00ea n\u00e3o precisa de um roteador Vue ou um roteador React para fazer o roteamento b\u00e1sico do lado do cliente. Isso ocorre porque o Inertia possui seu pr\u00f3prio sistema de roteamento que funciona com o roteamento do Laravel. Se o seu trabalho n\u00e3o precisar de dados de backend, voc\u00ea poder\u00e1 usar o auxiliar do roteador para rotear diretamente para o seu componente.<\/span><\/p>\n<pre><code class=\"language-php\">\nRoute::inertia('\/home', 'HomeComponent');\n<\/code><\/pre>\n<pre><code class=\"language-php\">\npublic function index()\n    {\n    return Inertia::render('Users\/Index', [\n        'users' =&gt; User::all();\n        'create_url' =&gt; URL::route('users.create'),\n    ]);\n}\n<\/code><\/pre>\n<p>Antes de continuarmos, gostar\u00edamos de apresentar o <a href=\"https:\/\/kinsta.com\/pt\/devkinsta\/\">DevKinsta<\/a>, uma poderosa ferramenta para desenvolvedores, designers e ag\u00eancias que permite que eles construam aplicativos web WordPress de uma e v\u00e1rias p\u00e1ginas. Felizmente, o WordPress pode ser integrado com o Laravel usando o pacote <a href=\"https:\/\/github.com\/corcel\/corcel\" target=\"_blank\" rel=\"noopener noreferrer\">Corcel<\/a>. Se voc\u00ea construir um aplicativo Laravel com integra\u00e7\u00e3o WordPress, confira a <a href=\"https:\/\/kinsta.com\/pt\/ferramenta-apm\/\">Ferramenta Kinsta APM<\/a> para um extraordin\u00e1rio monitoramento de desempenho.<\/p>\n<h3>Redirecionamentos<\/h3>\n<p>Voc\u00ea deve sempre redirecionar o usu\u00e1rio para a rota correto que corresponda ao pedido inicial. Por exemplo, se um usu\u00e1rio est\u00e1 enviando para <code>store<\/code> endpoint para enviar um artigo, certifique-se de redirecionar o cliente para <code>GET<\/code> endpoint talvez para a rota do artigo.<\/p>\n<pre><code class=\"language-php\">\npublic function store()\n{\n    Post::create(\n        Request::validate([\n            'title' =&gt; ['required'],\n            'body' =&gt; ['required'],\n        ])\n    );\n\n    \/\/ redirect the user to the posts show page\n    return Redirect::route('posts.show');\n}\n<\/code><\/pre>\n<h2>Desvantagens do uso do Inertia.js<\/h2>\n<p>At\u00e9 agora, concentramos nas v\u00e1rias vantagens de usar o Inertia. No entanto, como em qualquer ferramenta, Inertia tamb\u00e9m tem desvantagens.<\/p>\n<ul>\n<li>O usu\u00e1rio deve ter conhecimentos b\u00e1sicos de Vue ou React.<\/li>\n<li>Como os dados do modelo podem ser passados completamente para o lado do cliente, o usu\u00e1rio deve ter certeza de retornar explicitamente os dados relevantes para o frontend.<\/li>\n<li>APIs devem ser recriadas para que o aplicativo web possa ter um aplicativo Android ou iOS a qualquer momento.<\/li>\n<\/ul>\n<h2>Voc\u00ea deve usar Inertia.js?<\/h2>\n<p>Para responder \u00e0 pergunta se voc\u00ea deve ou n\u00e3o usar o Inertia, a resposta \u00e9 sim, se estiver criando um aplicativo de p\u00e1gina \u00fanica moderno, do lado do servidor e orientado a SEO, a resposta \u00e9 sim.<\/p>\n<p>Para obter mais informa\u00e7\u00f5es, visite o <a href=\"https:\/\/inertiajs.com\/\">site oficial do Inertia.js<\/a> e leia a documenta\u00e7\u00e3o.<\/p>\n\n<h2>Resumo<\/h2>\n<p>Aplicativos do lado do cliente e SPAs est\u00e3o se tornando cada vez mais populares \u00e0 medida que as tecnologias web evoluem. Enquanto isso, os aplicativos tradicionais do lado do servidor come\u00e7aram a desmoronar. Mais do que nunca, \u00e9 importante ter as ferramentas certas \u00e0 m\u00e3o.<\/p>\n<p>Inertia \u00e9 uma abordagem moderna ou solu\u00e7\u00e3o para desenvolvedores do lado do servidor para construir aplicativos de uma p\u00e1gina. Ela resolve tantos problemas e economiza muito tempo.<\/p>\n<p>Como discutimos em nosso artigo, Inertia agora suporta renderiza\u00e7\u00e3o do lado do servidor, o que o leva para um n\u00edvel totalmente novo, permitindo que os desenvolvedores criem SPAs guiados por SEO.<\/p>\n<p>Inertia tamb\u00e9m est\u00e1 recebendo muito amor da comunidade. O esfor\u00e7o de desenvolvimento \u00e9 patrocinado por Laravel Forge, Laracasts e uma s\u00e9rie de outras boas organiza\u00e7\u00f5es. Como resultado, Inertia \u00e9 uma ferramenta confi\u00e1vel que ser\u00e1 melhorada e mantida no futuro para os <a href=\"https:\/\/kinsta.com\/pt\/blog\/desenvolvedor-laravel\/\">desenvolvedores Laravel<\/a>, especialmente porque a <a href=\"https:\/\/kinsta.com\/pt\/blog\/salario-desenvolvedor-laravel\/\">demanda por desenvolvedores de Laravel<\/a> continua a crescer.<\/p>\n<p>E se voc\u00ea est\u00e1 procurando pela pr\u00f3xima casa do seu projeto Intertia-powered, confira as ofertas da <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hospedagem de Aplicativos<\/a> da Kinsta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Os aplicativos de p\u00e1gina \u00fanica (SPA) tornaram-se a maneira moderna de criar aplicativos da Web, e o Inertia.js \u00e9 a principal ferramenta que permite aos desenvolvedores &#8230;<\/p>\n","protected":false},"author":266,"featured_media":54759,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[864,523,506,528],"topic":[978],"class_list":["post-54758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-inertia-js","tag-javascript","tag-node-js","tag-web-developement","topic-tutoriais-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>O Guia Definitivo para Inertia.js - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O Guia Definitivo para Inertia.js\" \/>\n<meta property=\"og:description\" content=\"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T11:02:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T20:03:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Mostafa Said\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"O Guia Definitivo para Inertia.js\",\"datePublished\":\"2022-11-07T11:02:48+00:00\",\"dateModified\":\"2025-10-01T20:03:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\"},\"wordCount\":2982,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg\",\"keywords\":[\"inertia.js\",\"JavaScript\",\"node.js\",\"web developement\"],\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\",\"name\":\"O Guia Definitivo para Inertia.js - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg\",\"datePublished\":\"2022-11-07T11:02:48+00:00\",\"dateModified\":\"2025-10-01T20:03:03+00:00\",\"description\":\"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutoriais de JavaScript\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/tutoriais-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"O Guia Definitivo para Inertia.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g\",\"caption\":\"Mostafa Said\"},\"description\":\"I\u2019m Mostafa, a full-stack developer with a knack for all things Laravel, Inertia, and JavaScript frameworks. When I'm not coding, you can find me sharing my knowledge through tutorials, diving into hackathons (and winning a few), and spreading the love for tech by teaching what I've learned.\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"O Guia Definitivo para Inertia.js - Kinsta\u00ae","description":"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/","og_locale":"pt_PT","og_type":"article","og_title":"O Guia Definitivo para Inertia.js","og_description":"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.","og_url":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2022-11-07T11:02:48+00:00","article_modified_time":"2025-10-01T20:03:03+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg","type":"image\/jpeg"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Mostafa Said","Tempo estimado de leitura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"O Guia Definitivo para Inertia.js","datePublished":"2022-11-07T11:02:48+00:00","dateModified":"2025-10-01T20:03:03+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/"},"wordCount":2982,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg","keywords":["inertia.js","JavaScript","node.js","web developement"],"inLanguage":"pt-PT"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/","url":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/","name":"O Guia Definitivo para Inertia.js - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg","datePublished":"2022-11-07T11:02:48+00:00","dateModified":"2025-10-01T20:03:03+00:00","description":"Uma an\u00e1lise detalhada de como o Inertia.js facilita a cria\u00e7\u00e3o de aplicativos de p\u00e1gina \u00fanica uma tarefa f\u00e1cil, enquanto resolve outros problemas para os desenvolvedores.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/inertia-js\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2022\/11\/inertia-js.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/inertia-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Tutoriais de JavaScript","item":"https:\/\/kinsta.com\/pt\/topicos\/tutoriais-javascript\/"},{"@type":"ListItem","position":3,"name":"O Guia Definitivo para Inertia.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g","caption":"Mostafa Said"},"description":"I\u2019m Mostafa, a full-stack developer with a knack for all things Laravel, Inertia, and JavaScript frameworks. When I'm not coding, you can find me sharing my knowledge through tutorials, diving into hackathons (and winning a few), and spreading the love for tech by teaching what I've learned.","url":"https:\/\/kinsta.com\/pt\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/54758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=54758"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/54758\/revisions"}],"predecessor-version":[{"id":59170,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/54758\/revisions\/59170"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/translations\/dk"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/54758\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/54759"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=54758"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=54758"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=54758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}