{"id":61668,"date":"2022-11-07T12:01:47","date_gmt":"2022-11-07T11:01:47","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=61668&#038;post_type=knowledgebase&#038;preview_id=61668"},"modified":"2025-10-01T20:45:18","modified_gmt":"2025-10-01T19:45:18","slug":"inertia-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/","title":{"rendered":"Guida Definitiva a Inertia.js"},"content":{"rendered":"<p>Le applicazioni a pagina singola (SPA) sono diventate il modo moderno di creare applicazioni web e Inertia.js \u00e8 uno strumento leader che permette a chi lavora nello sviluppo di creare SPA con rendering sia lato client che lato server.<\/p>\n<p>In questo articolo vedremo come Inertia semplifica la costruzione di SPA e come risolve molti altri problemi di sviluppo. Inoltre, illustreremo le caratteristiche principali dello strumento.<\/p>\n<p>Ma prima di iniziare, assicuriamoci di aver capito come funzionano le applicazioni lato server e lato client.<\/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>Cos&#8217;\u00c8 il Rendering Lato Server?<\/h2>\n<p>Il rendering lato server (SSR) \u00e8 quando un&#8217;applicazione pu\u00f2 eseguire il rendering o la visualizzazione del contenuto di una pagina web sul server anzich\u00e9 nel browser. Quando un utente tenta di visitare <strong>example.com<\/strong>, il browser fa una richiesta al server chiedendo tutte le informazioni necessarie per visualizzare questa specifica pagina web e il server risponde immediatamente fornendo al browser una pagina completamente renderizzata.<\/p>\n<p>I motori di ricerca intervengono e indicizzano le informazioni fornite dal server prima che raggiungano il browser; questa operazione \u00e8 nota come ottimizzazione per i motori di ricerca (SEO). Il browser risolve quindi il contenuto JavaScript e la pagina web viene visualizzata dall&#8217;utente.<\/p>\n<figure id=\"attachment_133545\" aria-describedby=\"caption-attachment-133545\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-133545\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/server-side-rendering-diagram.png\" alt=\"Un diagramma che mostra le fasi del rendering lato server.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133545\" class=\"wp-caption-text\">Visualizzazione del contenuto renderizzato sul lato server.<\/figcaption><\/figure>\n<p>Il problema dell&#8217;approccio SSR \u00e8 che il caricamento di una pagina completamente renderizzata dal server richiede molto tempo e non offre un&#8217;esperienza piacevole all&#8217;utente. Per questo motivo gli sviluppatori prendono in considerazione le SPA e il rendering lato client.<\/p>\n\n<h2>Cos&#8217;\u00c8 il Rendering Lato Client?<\/h2>\n<p>Il rendering lato client consente al browser di avere a disposizione tutto ci\u00f2 che serve per il rendering della pagina web dal lato client, invece di ricevere una pagina completamente renderizzata dal server. Quando la pagina viene caricata, il browser non invia altre richieste al server, rendendo l&#8217;esperienza di navigazione estremamente veloce.<\/p>\n<figure id=\"attachment_133546\" aria-describedby=\"caption-attachment-133546\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-133546\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/client-side-rendering-diagram.png\" alt=\"Un diagramma che mostra le fasi del rendering lato client.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133546\" class=\"wp-caption-text\">Visualizzazione di contenuti renderizzati sul lato client.<\/figcaption><\/figure>\n<p>Il rendering lato client ha contribuito alla creazione delle SPA, rivoluzionando il web. \u00c8 possibile creare un sito web che non richiede il ricaricamento della pagina indipendentemente dal numero di link cliccati. In questo modo l&#8217;utente pu\u00f2 navigare facilmente all&#8217;interno del sito.<\/p>\n<p>Sebbene le SPA siano fantastiche, questo approccio presenta molte complessit\u00e0 e problemi che affronteremo in questo articolo. Inertia risolve la maggior parte di questi problemi utilizzando in modo efficace i framework lato server. Combina le migliori caratteristiche delle applicazioni lato server e lato client.<\/p>\n<h2>Cos&#8217;\u00c8 Inertia.js?<\/h2>\n<p>Inertia non \u00e8 un <a href=\"https:\/\/kinsta.com\/it\/blog\/librerie-javascript\/\">framework JavaScript<\/a>. Si tratta invece di una strategia o tecnica per lo sviluppo di SPA. Permette a chi sviluppa di usare gli attuali framework lato server per costruire una SPA moderna senza la complessit\u00e0 che ne deriva.<\/p>\n<p>Inertia \u00e8 stato progettato per accompagnare, non per sostituire, i framework che gi\u00e0 usate. Consideratelo un utile alleato che vi aiuta a completare le attivit\u00e0 in modo pi\u00f9 rapido ed efficiente. Al momento supporta tre framework frontend (Vue, React e Svelte) per il rendering lato client e due framework backend (Laravel e Rails) per il rendering lato server.<\/p>\n<p>Per la maggior parte degli <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\">sviluppatori e sviluppatrici Laravel<\/a>, Inertia \u00e8 una delle tecniche pi\u00f9 affidabili per la costruzione di SPA, poich\u00e9 permette di collegare sia il frontend che il backend.<\/p>\n<h2>Come Funziona Inertia.js?<\/h2>\n<p>Inertia \u00e8 simile a Vue Router, in quanto permette di spostarsi tra le pagine senza dover ricaricare l&#8217;intera pagina. Tuttavia, Inertia funziona in sincronia con il vostro framework lato server. Questo \u00e8 possibile grazie a <code>Link<\/code>, un wrapper per il tag di ancoraggio standard. Quando si fa clic su <code>Link<\/code>, Inertia intercetta l&#8217;evento del clic e invia una richiesta XHR al server, il quale riconosce che si tratta di una richiesta di Inertia e restituisce una risposta JSON. Questa risposta include il nome e i dati del componente JavaScript, dopodich\u00e9 Inertia rimuove magicamente i componenti non necessari e li sostituisce con quelli necessari per visitare la nuova pagina e aggiorna lo stato della cronologia.<\/p>\n<h3>Un Approfondimento sulle Funzionalit\u00e0 di Inertia.js<\/h3>\n<p>Quando una persona visita inizialmente <strong>example.com<\/strong>, il browser esegue una richiesta standard a pagina intera e il server restituisce una risposta HTML completa come se Inertia non esistesse. Questa risposta HTML contiene tutti gli asset del sito (CSS, JavaScript), ma anche un asset extra per Inertia, ovvero la root <code>div<\/code> con l&#8217;attributo <code>data-page<\/code> contenente i dati JSON della pagina iniziale. Inertia usa questi dati JSON per avviare il framework frontend e visualizzare la pagina iniziale.<\/p>\n<figure id=\"attachment_133547\" aria-describedby=\"caption-attachment-133547\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-133547\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/Inertia-visit-initial-page.png\" alt=\"Diagramma che mostra le azioni alla prima visita di una pagina web quando si usa Inertia.js.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133547\" class=\"wp-caption-text\">Inertia.js: risposta alla visita della pagina iniziale.<\/figcaption><\/figure>\n<p>Una volta avviata l&#8217;applicazione, ogni percorso che l&#8217;utente visita all&#8217;interno dello stesso dominio utilizzando <code>Link<\/code> sar\u00e0 una richiesta XHR con l\u2019header <code>X-Inertia<\/code>. Questo indica al server che si tratta di una richiesta di Inertia.<\/p>\n<p>Il feedback sar\u00e0 una risposta JSON con il contenuto della pagina, anzich\u00e9 una risposta HTML completa come nel caso della visita iniziale.<\/p>\n<figure id=\"attachment_133548\" aria-describedby=\"caption-attachment-133548\" style=\"width: 950px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-133548\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2022\/09\/Inertia-visit-route-in-the-same-domain.png\" alt=\"Diagramma che mostra le azioni di accesso ad altri percorsi quando si usa Inertia.js.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133548\" class=\"wp-caption-text\">Inertia.js: risposta alla visita del percorso successivo.<\/figcaption><\/figure>\n<h2>Quali Problemi Risolve Inertia.js?<\/h2>\n<p>Inertia risolve un gran numero di problemi per chi si occupa di sviluppo web. L&#8217;obiettivo della creazione di Inertia \u00e8 stato quello di fornire soluzioni rapide ed efficaci a tutte le complessit\u00e0 legate alla progettazione di una SPA.<\/p>\n<h3>Complessit\u00e0 delle SPA<\/h3>\n<p>Se sviluppatrici e sviluppatori dovessero costruire una SPA senza Inertia, dovrebbero creare API REST o GraphQL e proteggerle con un qualche metodo di autenticazione, il che richiederebbe la creazione di un sistema di gestione dello stato front-end, oltre a molte altre cose.<\/p>\n<p>Inertia \u00e8 stato progettato per aiutare i professionisti dello sviluppo a trasformare le loro applicazioni lato server che girano completamente sul server backend in un&#8217;applicazione JavaScript a pagina singola senza dover affrontare tutte le complessit\u00e0 legate alla creazione di SPA.<\/p>\n<p>Creare una SPA con Inertia \u00e8 simile alla creazione di un&#8217;applicazione renderizzata lato server. Si creano dei controller, si effettuano delle query al database per ottenere i dati necessari e si restituiscono i risultati alle viste.<\/p>\n<p>La chiave \u00e8 che le viste sono componenti JavaScript. Ci\u00f2 significa che ricevete i dati dal server e poi Inertia lavora con il framework frontend per mostrare la pagina contenente i dati come file JavaScript, eliminando la necessit\u00e0 di creare API.<\/p>\n<h3>Autenticazione<\/h3>\n<p>Poich\u00e9 Inertia alimenta l&#8217;applicazione con i dati e le risposte dal backend, utilizzer\u00e0 semplicemente il sistema di autenticazione che avete lato server. Questo significa che non dovrete preoccuparvi dell&#8217;autenticazione lato client, ma avrete un sistema di autenticazione basato sulla sessione che si sincronizza con il sistema di autenticazione lato server.<\/p>\n<h3>Complessit\u00e0 SEO<\/h3>\n<p>Come spiegato in precedenza per il rendering lato server, i motori di ricerca intercettano la risposta del server al browser per indicizzare il contenuto HTML della pagina web. Nel caso di una SPA, i motori di ricerca avranno difficolt\u00e0 a identificare il contenuto della pagina poich\u00e9 il server risponder\u00e0 con componenti JavaScript e dati JSON.<\/p>\n<p>Inertia ha risolto questo problema introducendo la <a href=\"https:\/\/inertiajs.com\/server-side-rendering\" target=\"_blank\" rel=\"noopener noreferrer\">funzione di rendering lato server (SSR)<\/a> che potete aggiungere alla vostra applicazione. Inertia usa l&#8217;ambiente Node.js come trigger per convertire la risposta dei dati JSON in HTML.<\/p>\n<p>Per illustrare meglio questo aspetto, immaginate che Inertia si collochi tra il server e il browser, osservandolo. Quando il server riceve una richiesta di Inertia e restituisce una risposta JSON, Inertia rileva l&#8217;esistenza di un server Node.js, trasforma la risposta JSON in HTML e la restituisce, permettendo ai motori di ricerca di indicizzare la pagina come se l&#8217;applicazione non fosse una SPA.<\/p>\n<p>Inertia offre anche un componente <code>Head<\/code> che vi permette di aggiungere un titolo e dei meta-dati alla vostra pagina:<\/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>Ecco un altro esempio tratto dalla <a href=\"https:\/\/inertiajs.com\/title-and-meta\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione online di 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>Moduli e Form Helper<\/h3>\n<p>\u00c8 possibile inviare una richiesta di modulo standard mentre si usa Inertia. Tuttavia, questo comporta l&#8217;aggiornamento dell&#8217;intera pagina.<\/p>\n<p>Inertia consente agli utenti di inviare richieste di moduli con Inertia, eliminando cos\u00ec la possibilit\u00e0 di aggiornare la pagina. Una volta che il modulo viene inviato con Inertia, viene gestito dal lato server, permettendovi di reindirizzare l&#8217;utente alla stessa pagina (o a una pagina completamente diversa).<\/p>\n<p>Inertia ci semplifica la vita nella creazione e nell&#8217;invio dei moduli. Ecco un esempio di come potete usarlo con 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>Potete inviare il modulo con <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>L&#8217;helper per i moduli di Inertia offre anche alcune propriet\u00e0 utili, come la propriet\u00e0 <code>processing<\/code> che si trasforma in <code>true<\/code> quando il modulo inizia a essere elaborato. Questa propriet\u00e0 pu\u00f2 essere utilizzata per disabilitare i pulsanti di invio durante l&#8217;elaborazione del modulo per evitare invii multipli:<\/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>Puoi anche utilizzare le propriet\u00e0 <code>preserveState<\/code>, <code>preserveScroll<\/code> e i callback degli eventi con il modulo, che ti saranno utili per aggiungere ulteriori opzioni al modulo:<\/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>Ricordare lo Stato con Inertia.js<\/h3>\n<p>Supponiamo che un utente stia compilando un modulo sul vostro sito web e decida di navigare verso un&#8217;altra pagina prima di inviarlo. Quando torner\u00e0 alla pagina del modulo, l&#8217;input dell&#8217;utente sar\u00e0 resettato.<\/p>\n<p>Per fortuna, Inertia offre la funzione <code>useRemember<\/code>, che vi permette di salvare gli input del modulo dell&#8217;utente nello stato di cronologia e di ripristinarli al momento della navigazione.<\/p>\n<p>Potete usare questa funzione importandola da Inertia e applicandola al vostro modulo:<\/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 avete una pagina con molti moduli che usano la funzione <code>useRemember<\/code>, ogni componente deve avere una chiave unica in modo che Inertia sappia quali dati ripristinare in ogni 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>Non \u00e8 necessario usare la funzione <code>useRemember<\/code> quando si utilizza il form helper di Inertia. Inertia ricorder\u00e0 automaticamente lo stato dell&#8217;input del modulo, quindi dobbiamo solo fornire un identificatore unico:<\/p>\n<pre><code class=\"language-js\">\nimport { useForm } from '@inertiajs\/inertia-vue3'\n\nconst form = useForm('CreateUser', data)\n<\/code><\/pre>\n<p>L&#8217;aspetto positivo di questa funzionalit\u00e0 \u00e8 che potete ricordare manualmente qualsiasi dato della vostra applicazione. Questo pu\u00f2 essere utile anche per passare i dati da un componente profondamente annidato al componente principale:<\/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>Caricamento di File<\/h3>\n<p>Inertia rileva se il modulo include dei file e, in tal caso, trasforma i dati della richiesta nell&#8217;oggetto <code>formData<\/code>, che \u00e8 sempre richiesto. Quindi, se avete un modulo che include un nome e un avatar, Inertia tratter\u00e0 il modulo come <code>multipart\/form-data<\/code>.<\/p>\n<h3>Convalida ed Errori<\/h3>\n<p>Quando un utente invia un modulo con valori errati e questo viene inviato al server per la convalida, l&#8217;utente ritorna alla pagina del modulo con una serie di errori di convalida nella sessione. Inertia cattura gli errori dalla sessione e li salva come props della pagina.<\/p>\n<p>Poich\u00e9 i props sono reattivi, appaiono quando l&#8217;invio del modulo viene completato. Per rilevare l&#8217;esistenza di errori, Inertia tiene d&#8217;occhio <code>page.props.errors<\/code>.<\/p>\n<p>Una volta trovati gli errori, fornisce un callback <code>onError()<\/code> invece di <code>onSuccess()<\/code>.<\/p>\n<p>Ecco un esempio con Vue 3 che aiuta a capire il concetto:<\/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>Visualizzare gli errori \u00e8 semplice, basta definirli come props e mostrarli in modo condizionato nel vostro 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>Usando Inertia, non dovrete preoccuparvi dei vecchi dati di input in caso di errori. Una volta che Inertia rileva che l&#8217;utente \u00e8 stato reindirizzato alla pagina con errori, conserva automaticamente il vecchio stato del componente per <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> e <code>DELETE<\/code>.<\/p>\n<h3>Reload Parziali con Inertia.js<\/h3>\n<p>La funzionalit\u00e0 di reload parziale di Inertia \u00e8 eccellente perch\u00e9 ricarica solo un componente selezionato nella pagina invece di recuperare l&#8217;intero set di dati dal server. Questo porta l&#8217;ottimizzazione dell&#8217;applicazione a un livello superiore. Potete anche visitare il seguente link per saperne di pi\u00f9 su come <a href=\"https:\/\/kinsta.com\/it\/blog\/prestazioni-laravel\/\">ottimizzare le prestazioni della vostra applicazione Laravel<\/a>.<\/p>\n<p>I reload parziali possono essere eseguiti utilizzando la propriet\u00e0 <code>only<\/code> di 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>Reindirizzamenti Esterni con Inertia.js<\/h3>\n<p>Il routing del sottodominio, o reindirizzamento esterno, \u00e8 una delle sfide pi\u00f9 frustranti delle SPA. \u00c8 irrazionale aspettarsi che la vostra applicazione rimanga un&#8217;applicazione a pagina singola pur visitando un dominio diverso.<\/p>\n<p>Potrebbe essere necessario reindirizzare una richiesta Inertia verso un sito web esterno o addirittura verso un altro endpoint non Inertia della vostra applicazione. Questo \u00e8 possibile attraverso una visita <code>window.location<\/code> avviata lato server:<\/p>\n<pre><code class=\"language-php\">\nreturn Inertia::location($url);\n<\/code><\/pre>\n<p>Se aprite la console durante la prova, scoprirete che la risposta \u00e8 <code>409 conflict<\/code>. Questa risposta contiene l&#8217;URL nell\u2019header <code>X-Inertia-Location<\/code>, che Inertia rilever\u00e0 sul lato client ed eseguir\u00e0 automaticamente la visita.<\/p>\n<h2>Come Lavorare con Inertia.js<\/h2>\n<p>Lavorare con Inertia \u00e8 simile a lavorare su un&#8217;applicazione lato server, con l&#8217;eccezione che si tratta di un&#8217;applicazione a pagina singola completamente reattiva. Dovreste essere in grado di definire le vostre rotte, personalizzare i controller e restituire una vista che Inertia invier\u00e0 al vostro framework frontend.<\/p>\n<h3>Percorsi Laravel e Inertia.js<\/h3>\n<p>Il routing di Laravel non \u00e8 un elemento a cui dovete rinunciare durante lo sviluppo della vostra applicazione; vi permette di costruire rapidamente i percorsi pi\u00f9 complessi e ci sono molte <a href=\"https:\/\/kinsta.com\/it\/blog\/tutorial-laravel\/\">risorse gratuite e a pagamento su Laravel<\/a> che vi possono aiutare a saperne di pi\u00f9 su Laravel e sul funzionamento del routing.<\/p>\n<p>Il bello \u00e8 che non avete bisogno di Vue Router o React Router per realizzare un semplice routing lato client, perch\u00e9 Inertia ha un proprio sistema di routing che funziona con il routing di Laravel. Se il lavoro non richiede dati di backend, potete usare l&#8217;helper del router per indirizzare direttamente 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>Prima di proseguire, vorremmo presentarvi <a href=\"https:\/\/kinsta.com\/it\/devkinsta\/\">DevKinsta<\/a>, un potente strumento per developer, designer e agenzie che permette di costruire applicazioni web WordPress a una o pi\u00f9 pagine. Per fortuna WordPress pu\u00f2 essere integrato con Laravel grazie al pacchetto <a href=\"https:\/\/github.com\/corcel\/corcel\" target=\"_blank\" rel=\"noopener noreferrer\">Corcel<\/a>. Se costruite un&#8217;app Laravel con l&#8217;integrazione di WordPress, date un&#8217;occhiata a <a href=\"https:\/\/kinsta.com\/it\/strumento-apm\/\">Kinsta APM Tool<\/a> per un monitoraggio straordinario delle prestazioni.<\/p>\n<h3>Reindirizzamenti<\/h3>\n<p>Dovete sempre reindirizzare l&#8217;utente al percorso corretto che corrisponde alla richiesta iniziale. Per esempio, se un utente si rivolge all&#8217;endpoint <code>store<\/code> per inviare un articolo, assicuratevi di reindirizzare il cliente all&#8217;endpoint <code>GET<\/code> magari al percorso 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>Svantaggi dell&#8217;Uso di Inertia.js<\/h2>\n<p>Finora ci siamo concentrati sui numerosi vantaggi dell&#8217;uso di Inertia. Tuttavia, come ogni strumento, anche Inertia ha degli svantaggi.<\/p>\n<ul>\n<li>L&#8217;utente deve avere una conoscenza di base di Vue o React.<\/li>\n<li>Poich\u00e9 i dati del modello possono essere passati completamente al lato client, l&#8217;utente deve assicurarsi di restituire esplicitamente i dati rilevanti al frontend.<\/li>\n<li>Le API devono essere ricreate se l&#8217;applicazione web deve avere un&#8217;applicazione Android o iOS in qualsiasi momento.<\/li>\n<\/ul>\n<h2>Dovreste Usare Inertia.js?<\/h2>\n<p>Per rispondere alla domanda se usare o meno Inertia, la risposta \u00e8 s\u00ec, se volete costruire un&#8217;app moderna a pagina singola, lato server e orientata alla SEO.<\/p>\n<p>Potete saperne di pi\u00f9 visitando il <a href=\"https:\/\/inertiajs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">sito ufficiale di Inertia.js<\/a> e leggendo la documentazione.<\/p>\n\n<h2>Riepilogo<\/h2>\n<p>Le applicazioni lato client e le SPA stanno diventando sempre pi\u00f9 popolari grazie all&#8217;evoluzione delle tecnologie web, mentre le applicazioni tradizionali lato server hanno iniziato a cadere in disuso. Oggi pi\u00f9 che mai \u00e8 importante avere a disposizione gli strumenti giusti.<\/p>\n<p>Inertia \u00e8 un fantastico approccio o una soluzione moderna per developer lato server che creano applicazioni a pagina singola. Risolve molti problemi e fa risparmiare molto tempo.<\/p>\n<p>Come abbiamo detto nel nostro articolo, Inertia ora supporta il rendering lato server, il che lo porta a un livello completamente nuovo, consentendo di sviluppare SPA SEO-driven.<\/p>\n<p>Inertia sta ricevendo anche molto apprezzamento da parte della comunit\u00e0. Lo sforzo di sviluppo \u00e8 sponsorizzato da Laravel Forge, Laracasts e da una serie di altre ottime organizzazioni. Di conseguenza, Inertia \u00e8 uno strumento affidabile che verr\u00e0 migliorato e mantenuto in futuro per gli <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppatore-laravel\/\">sviluppatrici e sviluppatori Laravel<\/a>, soprattutto perch\u00e9 la <a href=\"https:\/\/kinsta.com\/it\/blog\/stipendio-sviluppatore-laravel\/\">richiesta di persone esperte di programmazione Laravel<\/a> continua a crescere.<\/p>\n<p>Se state cercando una nuova casa per il vostro progetto basato su Inertia, date un&#8217;occhiata alle offerte di <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hosting di applicazioni<\/a> di Kinsta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le applicazioni a pagina singola (SPA) sono diventate il modo moderno di creare applicazioni web e Inertia.js \u00e8 uno strumento leader che permette a chi lavora &#8230;<\/p>\n","protected":false},"author":266,"featured_media":62031,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[26117,25648,25627,15892],"topic":[25847],"class_list":["post-61668","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-inertia-js","tag-javascript","tag-node-js","tag-web-development","topic-tutorial-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>Guida Definitiva a Inertia.js<\/title>\n<meta name=\"description\" content=\"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.\" \/>\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\/it\/blog\/inertia-js\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guida Definitiva a Inertia.js\" \/>\n<meta property=\"og:description\" content=\"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T11:01:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:45:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg\" \/>\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=\"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"Guida Definitiva a Inertia.js\",\"datePublished\":\"2022-11-07T11:01:47+00:00\",\"dateModified\":\"2025-10-01T19:45:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/\"},\"wordCount\":2601,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg\",\"keywords\":[\"inertia.js\",\"JavaScript\",\"node.js\",\"web development\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/\",\"name\":\"Guida Definitiva a Inertia.js\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg\",\"datePublished\":\"2022-11-07T11:01:47+00:00\",\"dateModified\":\"2025-10-01T19:45:18+00:00\",\"description\":\"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Guida Definitiva a Inertia.js\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial JavaScript\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/tutorial-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Guida Definitiva a Inertia.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Guida Definitiva a Inertia.js","description":"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.","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\/it\/blog\/inertia-js\/","og_locale":"it_IT","og_type":"article","og_title":"Guida Definitiva a Inertia.js","og_description":"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.","og_url":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2022-11-07T11:01:47+00:00","article_modified_time":"2025-10-01T19:45:18+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg","type":"image\/jpeg"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Mostafa Said","Tempo di lettura stimato":"14 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"Guida Definitiva a Inertia.js","datePublished":"2022-11-07T11:01:47+00:00","dateModified":"2025-10-01T19:45:18+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/"},"wordCount":2601,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg","keywords":["inertia.js","JavaScript","node.js","web development"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/inertia-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/","url":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/","name":"Guida Definitiva a Inertia.js","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg","datePublished":"2022-11-07T11:01:47+00:00","dateModified":"2025-10-01T19:45:18+00:00","description":"Inertia.js semplifica la costruzione di applicazioni a pagina singola (SPA) e risolve altri problemi di sviluppo.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/inertia-js\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2022\/11\/inertia-js.jpeg","width":1460,"height":730,"caption":"Guida Definitiva a Inertia.js"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/inertia-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Tutorial JavaScript","item":"https:\/\/kinsta.com\/it\/argomenti\/tutorial-javascript\/"},{"@type":"ListItem","position":3,"name":"Guida Definitiva a Inertia.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/61668","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=61668"}],"version-history":[{"count":10,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/61668\/revisions"}],"predecessor-version":[{"id":68495,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/61668\/revisions\/68495"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/translations\/dk"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/61668\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/62031"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=61668"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=61668"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=61668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}