{"id":59124,"date":"2022-11-07T12:07:16","date_gmt":"2022-11-07T11:07:16","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=59124&#038;post_type=knowledgebase&#038;preview_id=59124"},"modified":"2025-10-01T21:31:01","modified_gmt":"2025-10-01T19:31:01","slug":"inertia-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/","title":{"rendered":"La Gu\u00eda Definitiva de Inertia.js"},"content":{"rendered":"<p>Las aplicaciones de una sola p\u00e1gina (SPA) se han convertido en la forma moderna de crear aplicaciones web, e Inertia.js es una herramienta l\u00edder que permite a los desarrolladores crear SPA con renderizaci\u00f3n tanto del lado del cliente como del lado del servidor.<\/p>\n<p>En este art\u00edculo, veremos c\u00f3mo Inertia hace que construir SPAs sea un juego de ni\u00f1os y c\u00f3mo resuelve muchos otros problemas para los desarrolladores. Tambi\u00e9n cubriremos las principales caracter\u00edsticas de la herramienta.<\/p>\n<p>Pero antes de empezar, vamos a asegurarnos de que entendemos c\u00f3mo funcionan las aplicaciones del lado del servidor y del lado del cliente.<\/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>\u00bfQu\u00e9 Es la Renderizaci\u00f3n del Lado del Servidor?<\/h2>\n<p>La renderizaci\u00f3n del lado del servidor (SSR) es cuando una aplicaci\u00f3n puede renderizar o mostrar el contenido de la p\u00e1gina web en el servidor en lugar de en el navegador. Cuando un usuario intenta visitar <strong>ejemplo.com<\/strong>, el navegador hace una petici\u00f3n al servidor solicitando toda la informaci\u00f3n necesaria para mostrar esta p\u00e1gina web espec\u00edfica, y el servidor responde instant\u00e1neamente proporcionando al navegador una p\u00e1gina completamente renderizada.<\/p>\n<p>Los motores de b\u00fasqueda intervienen e indexan la informaci\u00f3n suministrada por el servidor antes de que llegue al navegador; esto se conoce como optimizaci\u00f3n de motores de b\u00fasqueda (SEO). A continuaci\u00f3n, el navegador resuelve el contenido de JavaScript, y la p\u00e1gina web se muestra al usuario.<\/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=\"Mostrando contenido renderizado en el lado del servidor.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133545\" class=\"wp-caption-text\">Mostrando contenido renderizado en el lado del servidor.<\/figcaption><\/figure>\n<p>El problema del enfoque SSR es que se tarda mucho en cargar una p\u00e1gina completamente renderizada desde el servidor, lo que no ofrece una experiencia agradable al usuario. Por ello, los desarrolladores consideran las SPA y el renderizado del lado del cliente.<\/p>\n\n<h2>\u00bfQu\u00e9 Es la Renderizaci\u00f3n del Lado del Cliente?<\/h2>\n<p>La renderizaci\u00f3n del lado del cliente permite que el navegador tenga todo lo que necesita para renderizar la p\u00e1gina web desde el lado del cliente, en lugar de recibir una p\u00e1gina completamente renderizada desde el servidor. Cuando se carga la p\u00e1gina, el navegador no env\u00eda ninguna otra petici\u00f3n al servidor, lo que hace que la experiencia de navegaci\u00f3n sea extremadamente 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=\"Visualizando el contenido renderizado en el lado del cliente.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133546\" class=\"wp-caption-text\">Visualizando el contenido renderizado en el lado del cliente.<\/figcaption><\/figure>\n<p>El renderizado del lado del cliente ayud\u00f3 a la creaci\u00f3n de las SPA, revolucionando la web. Se puede crear un sitio web que no requiera recargar la p\u00e1gina, independientemente de cu\u00e1ntos enlaces se pulsen. Esto facilita al usuario la navegaci\u00f3n por el sitio web.<\/p>\n<p>Aunque las SPA son fant\u00e1sticas, este enfoque tiene mucha complejidad y problemas que vamos a tratar hoy. Inertia aborda la mayor\u00eda de estos problemas utilizando eficazmente los frameworks del lado del servidor. Combina las mejores caracter\u00edsticas de las aplicaciones del lado del servidor y del lado del cliente.<\/p>\n<h2>\u00bfQu\u00e9 es Inertia.js?<\/h2>\n<p>Inertia no es un <a href=\"https:\/\/kinsta.com\/es\/blog\/bibliotecas-javascript\/\">framework de JavaScript<\/a>. En su lugar, es una estrategia o t\u00e9cnica para desarrollar SPAs. Permite al desarrollador utilizar los marcos actuales del lado del servidor para construir una SPA moderna sin la complejidad que conlleva.<\/p>\n<p>Inercia se ha dise\u00f1ado para acompa\u00f1ar, no para sustituir, a los frameworks que ya utilizas. Consid\u00e9ralo un \u00fatil aliado que te ayuda a completar las tareas de forma m\u00e1s r\u00e1pida y eficiente. Actualmente es compatible con tres frameworks de frontend (Vue, React y Svelte) para la renderizaci\u00f3n del lado del cliente y con dos frameworks de backend (Laravel y Rails) para la renderizaci\u00f3n del lado del servidor.<\/p>\n<p>Para la mayor\u00eda de los <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-laravel\/\">desarrolladores de Lar<\/a><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-laravel\/\">avel<\/a>, Inertia es una de las t\u00e9cnicas m\u00e1s fiables para construir SPAs, ya que les permite conectar tanto los frameworks de frontend como de backend.<\/p>\n<h2>\u00bfC\u00f3mo Funciona Inertia.js?<\/h2>\n<p>Inertia es similar a Vue Router, en el sentido de que te permite moverte entre p\u00e1ginas sin tener que recargar toda la p\u00e1gina. Sin embargo, Inertia funciona en sincronizaci\u00f3n con tu framework del lado del servidor. Esto es posible con <code>Link<\/code>, una envoltura para la etiqueta de anclaje est\u00e1ndar. Cuando se hace clic en un <code>Link<\/code>, Inercia intercepta el evento de clic y env\u00eda una petici\u00f3n XHR al servidor, haciendo que \u00e9ste reconozca que se trata de una petici\u00f3n de Inertia y devuelva una respuesta JSON. Esa respuesta incluye el nombre y los datos del componente JavaScript, tras lo cual Inertia elimina m\u00e1gicamente los componentes innecesarios y los sustituye por los necesarios para visitar la nueva p\u00e1gina y actualiza el estado del historial.<\/p>\n<h3>Una inmersi\u00f3n profunda en la funcionalidad de Inertia.js<\/h3>\n<p>Cuando un visitante visita inicialmente <strong>example.com<\/strong>, el navegador realiza una petici\u00f3n est\u00e1ndar de p\u00e1gina completa, y el servidor devuelve una respuesta HTML completa como si no existiera Inercia. Esta respuesta HTML tiene todos los activos del sitio (CSS, JavaScript), pero tambi\u00e9n contiene un activo extra para Inertia, que es la ra\u00edz <code>div<\/code> con el atributo <code>data-page<\/code> que contiene datos JSON para la p\u00e1gina inicial. Inertia utiliza entonces estos datos JSON para poner en marcha el marco del frontend y mostrar la 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: Respuesta de la visita a la p\u00e1gina inicial.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133547\" class=\"wp-caption-text\">Inertia.js: Respuesta de la visita a la p\u00e1gina inicial.<\/figcaption><\/figure>\n<p>Una vez iniciada la aplicaci\u00f3n, cada ruta que el usuario visite dentro del mismo dominio utilizando <code>Link<\/code> ser\u00e1 una petici\u00f3n XHR con la cabecera <code>X-Inertia<\/code>. Esto indica al servidor que se trata de una petici\u00f3n de Inercia.<\/p>\n<p>La respuesta vendr\u00e1 como una respuesta JSON con el contenido de la p\u00e1gina, en lugar de una respuesta HTML completa como en la 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: Respuesta de la visita de la ruta posterior.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133548\" class=\"wp-caption-text\">Inertia.js: Respuesta de la visita de la ruta posterior.<\/figcaption><\/figure>\n<h2>\u00bfQu\u00e9 Problemas Resuelve Inertia.js?<\/h2>\n<p>Inertia resuelve un gran n\u00famero de problemas para los desarrolladores web. El objetivo de crear Inertia era dar soluciones r\u00e1pidas y eficaces a toda la complejidad que conlleva el dise\u00f1o de una SPA.<\/p>\n<h3>Complejidades de las SPA<\/h3>\n<p>Si los desarrolladores construyeran una SPA sin Inertia, tendr\u00edan que crear APIs REST o GraphQL y protegerlas con alg\u00fan tipo de m\u00e9todo de autenticaci\u00f3n, lo que requerir\u00eda la creaci\u00f3n de un sistema de gesti\u00f3n de estados en el front-end, entre otras muchas cosas.<\/p>\n<p>Inertia se dise\u00f1\u00f3 para ayudar a los desarrolladores a transformar sus aplicaciones del lado del servidor, que se ejecutan completamente en el servidor backend, en una aplicaci\u00f3n JavaScript de una sola p\u00e1gina sin tener que pasar por todas las complejidades que conlleva la construcci\u00f3n de SPA.<\/p>\n<p>Crear una SPA con Inertia es similar a crear una aplicaci\u00f3n renderizada del lado del servidor. Creas controladores, haces consultas a la base de datos para obtener los datos necesarios y luego devuelves los resultados a las vistas.<\/p>\n<p>La clave aqu\u00ed es que las vistas son componentes de JavaScript. Esto significa que obtienes los datos de tu servidor, y luego Inertia trabaja con el marco del frontend para mostrar la p\u00e1gina que contiene los datos como un archivo JavaScript, eliminando la necesidad de crear APIs.<\/p>\n<h3>Autenticaci\u00f3n<\/h3>\n<p>Como Inertia alimenta la aplicaci\u00f3n con datos y respuestas del backend, simplemente utilizar\u00e1 cualquier sistema de autenticaci\u00f3n que tengas en el lado del servidor. Esto significa que no tendr\u00e1s que preocuparte por la autenticaci\u00f3n del lado del cliente, sino que tendr\u00e1s un sistema de autenticaci\u00f3n basado en la sesi\u00f3n que se sincroniza con tu sistema de autenticaci\u00f3n del lado del servidor.<\/p>\n<h3>Problemas de SEO<\/h3>\n<p>Como se ha explicado anteriormente para la renderizaci\u00f3n del lado del servidor, los motores de b\u00fasqueda interceptan la respuesta del servidor al navegador para indexar el contenido HTML de la p\u00e1gina web. En el caso de una SPA, los motores de b\u00fasqueda tendr\u00e1n dificultades para identificar el contenido de la p\u00e1gina, ya que el servidor responder\u00e1 con componentes JavaScript y datos JSON.<\/p>\n<p>Pero Inertia ha resuelto este problema introduciendo la <a href=\"https:\/\/inertiajs.com\/server-side-rendering\" target=\"_blank\" rel=\"noopener noreferrer\">funci\u00f3n de renderizaci\u00f3n del lado del servidor (SSR)<\/a> que puedes a\u00f1adir a tu aplicaci\u00f3n. Inertia utiliza el entorno Node.js como disparador para convertir la respuesta de datos JSON en HTML.<\/p>\n<p>Para ilustrar mejor esto, imagina a Inertia sentada entre el servidor y el navegador, observando. Cuando el servidor recibe una petici\u00f3n de Inertia y devuelve una respuesta JSON, Inertia detecta la existencia de un servidor Node.js, transforma la respuesta JSON en HTML y la devuelve, permitiendo a los motores de b\u00fasqueda indexar la p\u00e1gina como si la aplicaci\u00f3n no fuera una SPA.<\/p>\n<p>Inertia tambi\u00e9n proporciona un componente <code>Head<\/code>, que te permite a\u00f1adir un t\u00edtulo y metadatos a tu 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&quot \/&gt;\n  &lt;\/Head&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Aqu\u00ed tienes otro ejemplo de <a href=\"https:\/\/inertiajs.com\/title-and-meta\" target=\"_blank\" rel=\"noopener noreferrer\">la documentaci\u00f3n online de<\/a> Inertia:<\/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>Formularios y ayudante de formularios<\/h3>\n<p>Es posible enviar una solicitud de formulario est\u00e1ndar mientras se utiliza Inertia. Sin embargo, al hacerlo, se actualizar\u00e1 toda la p\u00e1gina.<\/p>\n<p>Inertia permite a los usuarios realizar solicitudes de formularios utilizando Inertia, lo que elimina la posibilidad de refrescar la p\u00e1gina. Una vez que el formulario se env\u00eda con Inercia, se gestiona en el lado del servidor, lo que te permite redirigir al usuario a la misma p\u00e1gina (o a una p\u00e1gina completamente diferente).<\/p>\n<p>Inercia nos facilita la vida a la hora de crear y enviar formularios. Aqu\u00ed tienes un ejemplo de c\u00f3mo puedes usarlo con la API de composici\u00f3n de Vue.js 3:<\/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>Puedes enviar el formulario con <code>GET<\/code>, <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> y <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>El ayudante de formulario de Inertia tambi\u00e9n ofrece algunas propiedades \u00fatiles como la propiedad <code>processing<\/code> que se convierte en <code>true<\/code> una vez que el formulario comienza a procesarse. Esto puede usarse para desactivar los botones de env\u00edo mientras el formulario se est\u00e1 procesando para evitar m\u00faltiples env\u00edos:<\/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>Tambi\u00e9n puedes utilizar <code>preserveState<\/code>, <code>preserveScroll<\/code> y devoluciones de llamada de eventos con el formulario, lo que ser\u00e1 \u00fatil cuando a\u00f1adas opciones adicionales al formulario:<\/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>Recordar el estado con Inertia.js<\/h3>\n<p>Supongamos que un usuario est\u00e1 rellenando un formulario en tu sitio web y decide navegar a otra p\u00e1gina antes de enviarlo. Cuando regrese a la p\u00e1gina del formulario, se restablecer\u00e1 la entrada del formulario del usuario.<\/p>\n<p>Afortunadamente, Inertia proporciona la funci\u00f3n <code>useRemember<\/code>, que te permite guardar las entradas del formulario del usuario en el estado de historia y restaurarlas en la navegaci\u00f3n de historia.<\/p>\n<p>Puedes utilizar esta funci\u00f3n import\u00e1ndola de Inertia y aplic\u00e1ndola a tu formulario:<\/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>Si tienes una p\u00e1gina con muchos formularios que utilizan la funci\u00f3n <code>useRemember<\/code>, cada componente debe tener una clave \u00fanica para que Inertia sepa qu\u00e9 datos debe restaurar en 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>No es necesario utilizar la funci\u00f3n <code>useRemember<\/code> cuando se utiliza el ayudante de formularios de Inertia. Inertia recordar\u00e1 el estado de la entrada del formulario de forma autom\u00e1tica, por lo que s\u00f3lo tenemos que darle un 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>Lo bueno de esta funcionalidad es que puedes recordar manualmente cualquier dato de tu aplicaci\u00f3n. Esto tambi\u00e9n puede ser \u00fatil para pasar datos de un componente profundamente anidado al 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>Carga de archivos<\/h3>\n<p>Inercia detecta si el formulario incluye archivos y, si es as\u00ed, transforma los datos de la solicitud en el objeto <code>formData<\/code>, que siempre es necesario. As\u00ed que si tienes un formulario que incluye un nombre y un avatar, Inertia tratar\u00e1 el formulario como <code>multipart\/form-data<\/code>.<\/p>\n<h3>Validaci\u00f3n y errores<\/h3>\n<p>Cuando un usuario env\u00eda un formulario con valores incorrectos y se env\u00eda al servidor para su validaci\u00f3n, devuelve al usuario a la p\u00e1gina del formulario con un flash de errores de validaci\u00f3n en la sesi\u00f3n. Inercia captura los errores de la sesi\u00f3n y los guarda como accesorios de la p\u00e1gina.<\/p>\n<p>Como los props son reactivos, aparecen cuando se completa el env\u00edo del formulario. Para que Inercia detecte la existencia de errores, vigila <code>page.props.errors<\/code>.<\/p>\n<p>Una vez que ha encontrado errores, proporciona una llamada de retorno a <code>onError()<\/code> en lugar de <code>onSuccess()<\/code>.<\/p>\n<p>Aqu\u00ed tienes un ejemplo con Vue 3 para ayudarte a entender el concepto:<\/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>Mostrar los errores es tan f\u00e1cil como definirlos como props y mostrarlos condicionalmente en tu 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>Al utilizar Inercia, no tienes que preocuparte por los datos de entrada antiguos en caso de errores. Una vez que Inercia detecta que el usuario ha sido redirigido a la p\u00e1gina con errores, conserva autom\u00e1ticamente el estado antiguo del componente para <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> y <code>DELETE<\/code>.<\/p>\n<h3>Recargas parciales con Inertia.js<\/h3>\n<p>La funcionalidad de recarga parcial de Inertia es simplemente excelente, ya que s\u00f3lo recarga un componente seleccionado en la p\u00e1gina, en lugar de volver a obtener todo el conjunto de datos del servidor. Esto lleva la optimizaci\u00f3n de tu aplicaci\u00f3n al siguiente nivel. Tambi\u00e9n puedes visitar el siguiente enlace para saber m\u00e1s sobre c\u00f3mo <a href=\"https:\/\/kinsta.com\/es\/blog\/rendimiento-laravel\/\">optimizar el rendimiento de tu aplicaci\u00f3n Laravel<\/a>.<\/p>\n<p>Se pueden realizar recargas parciales utilizando la propiedad <code>only<\/code> de 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>Redirecciones externas con Inertia.js<\/h3>\n<p>El enrutamiento de subdominios, o redireccionamiento externo, es uno de los retos m\u00e1s frustrantes de las SPA. Es irracional esperar que tu aplicaci\u00f3n siga siendo una aplicaci\u00f3n de una sola p\u00e1gina mientras visita un dominio diferente.<\/p>\n<p>Puede ser necesario redirigir una petici\u00f3n de Inertia a un sitio web externo o incluso a otro punto final no perteneciente a Inertia en tu aplicaci\u00f3n. Esto es posible mediante una visita iniciada por el servidor <code>window.location<\/code>:<\/p>\n<pre><code class=\"language-php\">\nreturn Inertia::location($url);\n<\/code><\/pre>\n<p>Si abres la consola mientras pruebas esto, ver\u00e1s que devuelve <code>409 conflict<\/code>. Esta respuesta contiene la URL en la cabecera <code>X-Inertia-Location<\/code>, que Inertia detectar\u00e1 en el lado del cliente y realizar\u00e1 autom\u00e1ticamente la visita.<\/p>\n<h2>C\u00f3mo Trabajar con Inertia.js<\/h2>\n<p>Trabajar con Inertia es similar a trabajar en una aplicaci\u00f3n del lado del servidor, con la excepci\u00f3n de que es una aplicaci\u00f3n de una sola p\u00e1gina totalmente reactiva. Deber\u00edas ser capaz de definir tus rutas, personalizar los controladores y devolver una vista para que Inertia la env\u00ede a tu framework de frontend.<\/p>\n<h3>Rutas de Laravel e Inertia.js<\/h3>\n<p>El enrutamiento de Laravel no es algo a lo que quieras renunciar cuando desarrolles tu aplicaci\u00f3n; te permite construir r\u00e1pidamente las rutas m\u00e1s complejas, y hay un mont\u00f3n de <a href=\"https:\/\/kinsta.com\/es\/blog\/tutoriales-laravel\/\">recursos de Laravel gratuitos y de pago<\/a> que pueden ayudarte a aprender m\u00e1s sobre Laravel y c\u00f3mo funciona el enrutamiento.<\/p>\n<p>Lo bueno aqu\u00ed es que no necesitas Vue Router o React Router para llevar a cabo un enrutamiento simple del lado del cliente, porque Inertia tiene su propio sistema de enrutamiento que funciona con el de Laravel. Si el trabajo no requiere ning\u00fan dato del backend, puedes utilizar el ayudante del enrutador para enrutar directamente a un componente.<\/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 continuar, nos gustar\u00eda presentarte <a href=\"https:\/\/kinsta.com\/es\/devkinsta\/\">DevKinsta<\/a>, una potente herramienta para desarrolladores, dise\u00f1adores y agencias que les permite construir aplicaciones web de WordPress de una o varias p\u00e1ginas. Afortunadamente, WordPress puede integrarse con Laravel utilizando el paquete <a href=\"https:\/\/github.com\/corcel\/corcel\" target=\"_blank\" rel=\"noopener noreferrer\">Corcel<\/a>. Si construyes una aplicaci\u00f3n Laravel con integraci\u00f3n de WordPress, echa un vistazo a la <a href=\"https:\/\/kinsta.com\/es\/herramienta-apm\/\">herramienta Kinsta APM<\/a> para una extraordinaria monitorizaci\u00f3n del rendimiento.<\/p>\n<h3>Redirecciones<\/h3>\n<p>Siempre debes redirigir al usuario a la ruta correcta que corresponde a la solicitud inicial. Por ejemplo, si un usuario est\u00e1 enviando a <code>store<\/code> endpoint para enviar un post, aseg\u00farate de redirigir al cliente a <code>GET<\/code> endpoint quiz\u00e1s a la ruta del post.<\/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>Desventajas del Uso de Inertia.js<\/h2>\n<p>Hasta ahora, nos hemos centrado en las diversas ventajas de utilizar Inertia. Sin embargo, como cualquier herramienta, Inertia tambi\u00e9n tiene desventajas.<\/p>\n<ul>\n<li>El usuario debe tener conocimientos b\u00e1sicos de Vue o React.<\/li>\n<li>Dado que los datos del modelo pueden pasarse completamente al lado del cliente, el usuario debe asegurarse de devolver expl\u00edcitamente los datos relevantes al frontend.<\/li>\n<li>Las APIs deben ser recreadas si la aplicaci\u00f3n web va a tener una aplicaci\u00f3n Android o iOS en alg\u00fan momento.<\/li>\n<\/ul>\n<h2>\u00bfDeber\u00edas Utilizar Inertia.js?<\/h2>\n<p>Para responder a la pregunta de si debes o no utilizar Inertia, la respuesta es s\u00ed, si quieres construir una aplicaci\u00f3n moderna de una sola p\u00e1gina, del lado del servidor y orientada al SEO.<\/p>\n<p>Puedes obtener m\u00e1s informaci\u00f3n visitando el <a href=\"https:\/\/inertiajs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">sitio web oficial de Inertia.js<\/a>\u00a0y leyendo la documentaci\u00f3n.<\/p>\n\n<h2>Resumen<\/h2>\n<p>Las aplicaciones del lado del cliente y las SPA son cada vez m\u00e1s populares a medida que evolucionan las tecnolog\u00edas web, mientras que las aplicaciones tradicionales del lado del servidor han empezado a quedarse en el camino. Ahora m\u00e1s que nunca, es importante tener a mano las herramientas adecuadas.<\/p>\n<p>Inertia es un fant\u00e1stico enfoque o soluci\u00f3n moderna para que los desarrolladores del lado del servidor construyan aplicaciones de una sola p\u00e1gina. Resuelve muchos problemas y ahorra mucho tiempo.<\/p>\n<p>Como ya comentamos en nuestro art\u00edculo, Inertia admite ahora el renderizado del lado del servidor, lo que lo lleva a un nivel completamente nuevo al permitir a los desarrolladores crear SPA impulsadas por el SEO.<\/p>\n<p>Inertia tambi\u00e9n est\u00e1 recibiendo mucho amor de la comunidad. El esfuerzo de desarrollo est\u00e1 patrocinado por Laravel Forge, Laracasts, y un n\u00famero de otras buenas organizaciones. Como resultado, Inertia es una herramienta fiable que se mejorar\u00e1 y mantendr\u00e1 en el futuro para los <a href=\"https:\/\/kinsta.com\/es\/blog\/desarrollador-de-laravel\/\">desarrolladores de Laravel<\/a>, sobre todo porque la <a href=\"https:\/\/kinsta.com\/es\/blog\/salario-desarrolladores-laravel\/\">demanda de codificadores de Laravel<\/a> sigue creciendo.<\/p>\n<p>Y si est\u00e1s buscando el pr\u00f3ximo hogar para tu proyecto impulsado por Intertia, echa un vistazo a las ofertas de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">alojamiento de aplicaciones<\/a> de Kinsta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las aplicaciones de una sola p\u00e1gina (SPA) se han convertido en la forma moderna de crear aplicaciones web, e Inertia.js es una herramienta l\u00edder que permite &#8230;<\/p>\n","protected":false},"author":266,"featured_media":59125,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[1200,867,847,403],"topic":[1297],"class_list":["post-59124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-inertia-js","tag-javascript","tag-node-js","tag-web-development","topic-tutoriales-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>La Gu\u00eda Definitiva de Inertia.js<\/title>\n<meta name=\"description\" content=\"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.\" \/>\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\/es\/blog\/inertia-js\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"La Gu\u00eda Definitiva de Inertia.js\" \/>\n<meta property=\"og:description\" content=\"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T11:07:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:31:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/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=\"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\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\/es\/blog\/inertia-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"La Gu\u00eda Definitiva de Inertia.js\",\"datePublished\":\"2022-11-07T11:07:16+00:00\",\"dateModified\":\"2025-10-01T19:31:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/\"},\"wordCount\":3053,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg\",\"keywords\":[\"inertia.js\",\"JavaScript\",\"node.js\",\"web development\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/\",\"name\":\"La Gu\u00eda Definitiva de Inertia.js\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg\",\"datePublished\":\"2022-11-07T11:07:16+00:00\",\"dateModified\":\"2025-10-01T19:31:01+00:00\",\"description\":\"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutoriales JavaScript\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/tutoriales-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"La Gu\u00eda Definitiva de Inertia.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"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\/es\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"La Gu\u00eda Definitiva de Inertia.js","description":"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.","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\/es\/blog\/inertia-js\/","og_locale":"es_ES","og_type":"article","og_title":"La Gu\u00eda Definitiva de Inertia.js","og_description":"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.","og_url":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2022-11-07T11:07:16+00:00","article_modified_time":"2025-10-01T19:31:01+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg","type":"image\/jpeg"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Mostafa Said","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"La Gu\u00eda Definitiva de Inertia.js","datePublished":"2022-11-07T11:07:16+00:00","dateModified":"2025-10-01T19:31:01+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/"},"wordCount":3053,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg","keywords":["inertia.js","JavaScript","node.js","web development"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/","url":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/","name":"La Gu\u00eda Definitiva de Inertia.js","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg","datePublished":"2022-11-07T11:07:16+00:00","dateModified":"2025-10-01T19:31:01+00:00","description":"Veamos c\u00f3mo Inertia.js hace que la construcci\u00f3n de aplicaciones de una sola p\u00e1gina sea un juego de ni\u00f1os, al tiempo que resuelve otros problemas para los desarrolladores.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/inertia-js\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2022\/11\/inertia-js.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/inertia-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Tutoriales JavaScript","item":"https:\/\/kinsta.com\/es\/secciones\/tutoriales-javascript\/"},{"@type":"ListItem","position":3,"name":"La Gu\u00eda Definitiva de Inertia.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","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\/es\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/59124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=59124"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/59124\/revisions"}],"predecessor-version":[{"id":65344,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/59124\/revisions\/65344"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/translations\/dk"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/59124\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/59125"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=59124"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=59124"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=59124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}