{"id":46462,"date":"2022-11-07T12:09:02","date_gmt":"2022-11-07T11:09:02","guid":{"rendered":"https:\/\/kinsta.com\/dk\/?p=46462&#038;post_type=knowledgebase&#038;preview_id=46462"},"modified":"2025-10-01T20:03:59","modified_gmt":"2025-10-01T19:03:59","slug":"inertia-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/","title":{"rendered":"Den ultimative guide til Inertia.js"},"content":{"rendered":"<p>Single-page applications (SPA&#8217;er) er blevet den moderne m\u00e5de at skabe webapplikationer p\u00e5, og Inertia.js er et f\u00f8rende v\u00e6rkt\u00f8j, der g\u00f8r det muligt for udviklere at skabe SPA&#8217;er med b\u00e5de klient- og server-side rendering.<\/p>\n<p>I denne artikel vil vi se p\u00e5, hvordan Inertia g\u00f8r det til en leg at konstruere SPA&#8217;er, og hvordan det l\u00f8ser mange andre problemer for udviklere. Vi vil ogs\u00e5 d\u00e6kke de vigtigste funktioner i v\u00e6rkt\u00f8jet.<\/p>\n<p>Men f\u00f8r vi begynder, skal vi f\u00f8rst sikre os, at vi forst\u00e5r, hvordan server- og klientsideapplikationer fungerer.<\/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>Hvad er server-side rendering?<\/h2>\n<p>Server-side rendering (SSR) er, n\u00e5r et program kan rendere eller vise websideindhold p\u00e5 serveren i stedet for i browseren. N\u00e5r en bruger fors\u00f8ger at bes\u00f8ge <strong>example.com<\/strong>, sender browseren en anmodning til serveren og beder om alle de n\u00f8dvendige oplysninger til visning af denne specifikke webside, og serveren svarer straks ved at give browseren en fuldt gengivet side.<\/p>\n<p>S\u00f8gemaskinerne griber ind og indekserer de oplysninger, der leveres af serveren, f\u00f8r de n\u00e5r frem til browseren; dette kaldes s\u00f8gemaskineoptimering (SEO). Browseren opl\u00f8ser derefter JavaScript-indholdet, og websiden vises for brugeren.<\/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=\"Visning af indhold, der er gengivet p\u00e5 serversiden.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133545\" class=\"wp-caption-text\">Visning af indhold, der er gengivet p\u00e5 serversiden.<\/figcaption><\/figure>\n<p>Problemet med SSR-tilgangen er, at det tager lang tid at indl\u00e6se en fuldt renderet side fra serveren, hvilket ikke giver en behagelig brugeroplevelse. Derfor overvejer udviklere SPA&#8217;er og rendering p\u00e5 klientsiden.<\/p>\n\n<h2>Hvad er client-side rendering?<\/h2>\n<p>Client-side rendering giver browseren mulighed for at f\u00e5 alt det, den har brug for til at rendere websiden fra klientsiden i stedet for at modtage en fuldt renderet side fra serveren. N\u00e5r siden er indl\u00e6st, sender browseren ikke andre anmodninger til serveren, hvilket g\u00f8r browsing-oplevelsen ekstremt hurtig.<\/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=\"Et diagram, der viser stadierne af gengivelse p\u00e5 klientsiden.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133546\" class=\"wp-caption-text\">Visning af indhold, der er gengivet p\u00e5 klientsiden.<\/figcaption><\/figure>\n<p>Rendering p\u00e5 klientsiden hjalp med at skabe SPA&#8217;er, hvilket revolutionerede internettet. Du kan oprette et websted, der ikke kr\u00e6ver genindl\u00e6sning af siden, uanset hvor mange links du klikker p\u00e5. Det g\u00f8r det nemt for brugeren at navigere gennem hjemmesiden.<\/p>\n<p>Selv om SPA&#8217;er er fantastiske, har denne tilgang en masse kompleksitet og problemer, som vi vil d\u00e6kke i dag. Inertia l\u00f8ser de fleste af disse problemer ved effektivt at udnytte server-side frameworks. Det kombinerer de bedste funktioner fra b\u00e5de server- og klientside apps.<\/p>\n<h2>Hvad er Inertia.js?<\/h2>\n<p>Inertia er ikke en <a href=\"https:\/\/kinsta.com\/dk\/blog\/javascript-biblioteker\/\">JavaScript-framework<\/a>. Det er i stedet en strategi eller teknik til udvikling af SPA&#8217;er. Den g\u00f8r det muligt for udvikleren at udnytte de nuv\u00e6rende server-side frameworks til at bygge en moderne SPA uden den kompleksitet, der f\u00f8lger med den.<\/p>\n<p>Inertia er designet til at ledsage og ikke erstatte de frameworks, du allerede bruger. Betragt det som en hj\u00e6lpsom allierede, der hj\u00e6lper dig med at udf\u00f8re opgaverne hurtigere og mere effektivt. Den underst\u00f8tter i \u00f8jeblikket tre frontend-frameworks (Vue, React og Svelte) til klientside-rendering og to backend-rammer (Laravel og Rails) til server-side-rendering.<\/p>\n<p>For de fleste <a href=\"https:\/\/kinsta.com\/blog\/what-is-laravel\/\">Laravel-udviklere<\/a> er Inertia en af de mest p\u00e5lidelige teknikker til at konstruere SPA&#8217;er, da den giver dem mulighed for at forbinde b\u00e5de frontend- og backend-frameworks.<\/p>\n<h2>Hvordan fungerer Inertia.js?<\/h2>\n<p>Inertia ligner Vue Router, idet det giver dig mulighed for at flytte mellem sider uden at skulle genindl\u00e6se hele siden. Inertia fungerer dog i synkronisering med dit server-side framework. Dette er muligt med <code>Link<\/code>, en wrapper for standard ankertagget. N\u00e5r der klikkes p\u00e5 en <code>Link<\/code>, opfanger Inertia klikh\u00e6ndelsen og sender en XHR-foresp\u00f8rgsel til serveren, hvilket f\u00e5r serveren til at genkende, at der er tale om en Inertia-foresp\u00f8rgsel, og returnere et JSON-svar. Dette svar indeholder JavaScript-komponentens navn og data, hvorefter Inertia p\u00e5 magisk vis fjerner un\u00f8dvendige komponenter og erstatter dem med dem, der er n\u00f8dvendige for at bes\u00f8ge den nye side, og opdaterer historikstatus.<\/p>\n<h3>Et dybt dyk ind i Inertia.js-funktionaliteten<\/h3>\n<p>N\u00e5r en bes\u00f8gende f\u00f8rste gang bes\u00f8ger <strong>example.com<\/strong>, udf\u00f8rer browseren en standardanmodning om en hel side, og serveren returnerer et fuldst\u00e6ndigt HTML-svar, som om Inertia ikke eksisterede. Dette HTML-svar indeholder alle webstedets aktiver (CSS, JavaScript), men det indeholder ogs\u00e5 et ekstra aktiv for Inertia, som er roden <code>div<\/code> med <code>data-page<\/code>-attributten, der indeholder JSON-data for den oprindelige side. Inertia bruger derefter disse JSON-data til at kickstarte frontend-framework og vise startsiden.<\/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=\"Diagram, der viser handlinger ved f\u00f8rste bes\u00f8g p\u00e5 en webside ved brug af Inertia.js.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133547\" class=\"wp-caption-text\">Inertia.js: Svar p\u00e5 det f\u00f8rste sidebes\u00f8g<\/figcaption><\/figure>\n<p>N\u00e5r appen er startet op, vil hver rute, som brugeren bes\u00f8ger inden for det samme dom\u00e6ne ved hj\u00e6lp af <code>Link<\/code>, v\u00e6re en XHR-foresp\u00f8rgsel med <code>X-Inertia<\/code>-headeren. Dette fort\u00e6ller serveren, at der er tale om en Inertia-foresp\u00f8rgsel.<\/p>\n<p>Tilbagemeldingen vil komme som et JSON-svar med sidens indhold i stedet for et komplet HTML-svar som ved det f\u00f8rste bes\u00f8g.<\/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=\"Diagram, der viser handlinger ved adgang til andre ruter ved brug af Inertia.js.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133548\" class=\"wp-caption-text\">Inertia.js: Svar p\u00e5 efterf\u00f8lgende rutebes\u00f8g.<\/figcaption><\/figure>\n<h2>Hvilke problemer l\u00f8ser Inertia.js?<\/h2>\n<p>Inertia l\u00f8ser en lang r\u00e6kke problemer for webudviklere. M\u00e5let med at skabe Inertia var at give hurtige og effektive l\u00f8sninger p\u00e5 al den kompleksitet, der f\u00f8lger med design af en SPA.<\/p>\n<h3>SPA-kompleksiteter<\/h3>\n<p>Hvis udviklere skulle bygge en SPA uden Inertia, ville de v\u00e6re n\u00f8dt til at oprette REST- eller GraphQL-API&#8217;er og beskytte dem med en eller anden form for godkendelsesmetode, hvilket blandt mange andre ting ville kr\u00e6ve oprettelse af et front-end-state-management-system.<\/p>\n<p>Inertia blev designet til at hj\u00e6lpe udviklere med at omdanne deres serversideapplikationer, der k\u00f8rer helt p\u00e5 backend-serveren, til en JavaScript-applikation med \u00e9n side uden at skulle gennemg\u00e5 alle de kompleksiteter, der f\u00f8lger med opbygningen af SPA&#8217;er.<\/p>\n<p>Oprettelse af en SPA ved hj\u00e6lp af Inertia svarer til at oprette en server-side rendered app. Du opretter controllere, foretager foresp\u00f8rgsler til databasen for at f\u00e5 de n\u00f8dvendige data og returnerer derefter resultaterne til visningerne.<\/p>\n<p>N\u00f8glen her er, at visningerne er JavaScript-komponenter. Det betyder, at du f\u00e5r dataene fra din server, hvorefter Inertia arbejder sammen med frontend-framework for at vise siden med dataene som en JavaScript-fil, hvilket eliminerer behovet for at oprette API&#8217;er.<\/p>\n<h3>Autentifikation<\/h3>\n<p>Da Inertia forsyner applikationen med data og svar fra backenden, vil den simpelthen bruge det autentifikationssystem, du har p\u00e5 serversiden. Det betyder, at du ikke beh\u00f8ver at bekymre dig om autentificering p\u00e5 klientsiden &#8211; du vil i stedet have et sessionsbaseret autentificeringssystem, der synkroniseres med dit autentificeringssystem p\u00e5 serversiden.<\/p>\n<h3>SEO-problemer<\/h3>\n<p>Som tidligere forklaret for server-side rendering, opsnapper s\u00f8gemaskinerne serverens svar til browseren for at indeksere websidens HTML-indhold. I tilf\u00e6lde af en SPA vil s\u00f8gemaskinerne have sv\u00e6rt ved at identificere sidens indhold, da serveren vil svare med enten JavaScript-komponenter og JSON-data.<\/p>\n<p>Men Inertia l\u00f8ste dette problem ved at introducere <a href=\"https:\/\/inertiajs.com\/server-side-rendering\" target=\"_blank\" rel=\"noopener noreferrer\">funktionen SSR (Server-side rendering)<\/a>, som du kan tilf\u00f8je til din applikation. Inertia bruger Node.js-milj\u00f8et som en udl\u00f8ser til at konvertere JSON-datasvaret til HTML.<\/p>\n<p>For at illustrere dette bedre kan du forestille dig Inertia, der sidder mellem serveren og browseren og kigger p\u00e5. N\u00e5r serveren modtager en Inertia-foresp\u00f8rgsel og returnerer et JSON-svar, registrerer Inertia eksistensen af en Node.js-server, omdanner JSON-svaret til HTML og returnerer det, s\u00e5 s\u00f8gemaskinerne kan indeksere siden, som om appen ikke var en SPA.<\/p>\n<p>Inertia indeholder ogs\u00e5 en <code>Head<\/code>-komponent, som giver dig mulighed for at tilf\u00f8je en titel og metadata til din side:<\/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>Her er et andet eksempel fra <a href=\"https:\/\/inertiajs.com\/title-and-meta\" target=\"_blank\" rel=\"noopener noreferrer\">Inertias onlinedokumentation<\/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>Formularer og formularhj\u00e6lper<\/h3>\n<p>Det er muligt at indsende en standardformularanmodning, mens man bruger Inertia. Det vil dog resultere i en opdatering af hele siden.<\/p>\n<p>Inertia giver brugerne mulighed for at indgive formularforesp\u00f8rgsler ved hj\u00e6lp af Inertia, hvilket fjerner muligheden for sideopfriskning. N\u00e5r formularen er indsendt med Inertia, bliver den h\u00e5ndteret server-side, hvilket g\u00f8r det muligt for dig at omdirigere brugeren tilbage til den samme side (eller en helt anden side).<\/p>\n<p>Inertia g\u00f8r vores liv lettere, n\u00e5r vi opretter og indsender formularer. Her er et eksempel p\u00e5, hvordan du kan bruge det med 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>Du kan indsende formularen med <code>GET<\/code>, <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> og <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>Inertias formularhj\u00e6lper tilbyder ogs\u00e5 et par nyttige egenskaber som f.eks. <code>processing<\/code>-egenskaben, der bliver til <code>true<\/code>, n\u00e5r formularen begynder at blive behandlet. Dette kan bruges til at deaktivere indsendelsesknapper, mens formularen behandles, for at forhindre flere indsendelser:<\/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>Du kan ogs\u00e5 bruge <code>preserveState<\/code>, <code>preserveScroll<\/code> og event callbacks med formularen, hvilket vil v\u00e6re nyttigt, n\u00e5r du tilf\u00f8jer yderligere muligheder til formularen:<\/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>Huskelse af tilstand med Inertia.js<\/h3>\n<p>Lad os sige, at en bruger udfylder en formular p\u00e5 dit websted og beslutter sig for at navigere v\u00e6k til en anden side, f\u00f8r han sender den. N\u00e5r de vender tilbage til formularens side, vil brugerens formularinput blive nulstillet.<\/p>\n<p>Heldigvis tilbyder Inertia funktionen <code>useRemember<\/code>, som giver dig mulighed for at gemme brugerens formularinput i historikstatus og gendanne dem ved historiknavigation.<\/p>\n<p>Du kan bruge denne funktion ved at importere den fra Inertia og anvende den p\u00e5 din formular:<\/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>Hvis du har en side med mange formularer, der bruger funktionen <code>useRemember<\/code>, skal hver komponent have en unik n\u00f8gle, s\u00e5 Inertia ved, hvilke data der skal gendannes i hver komponent:<\/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>Vi beh\u00f8ver ikke at bruge <code>useRemember<\/code>-funktionen, n\u00e5r vi bruger Inertias formularhj\u00e6lper. Inertia vil automatisk huske formularinputets tilstand, s\u00e5 vi skal blot angive en unik identifikator:<\/p>\n<pre><code class=\"language-js\">\nimport { useForm } from '@inertiajs\/inertia-vue3'\n\nconst form = useForm('CreateUser', data)\n<\/code><\/pre>\n<p>Det gode ved denne funktionalitet er, at du kan huske alle data i din applikation manuelt. Dette kan ogs\u00e5 v\u00e6re nyttigt til at videregive data fra en dybt indlejret komponent til hovedkomponenten:<\/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>Filoverf\u00f8rsler<\/h3>\n<p>Inertia registrerer, om formularen indeholder filer, og hvis det er tilf\u00e6ldet, transformerer foresp\u00f8rgselsdataene til <code>formData<\/code>-objektet, hvilket altid er p\u00e5kr\u00e6vet. S\u00e5 hvis du har en formular, der indeholder et navn og en avatar, vil Inertia behandle formularen som <code>multipart\/form-data<\/code>.<\/p>\n<h3>Validering og fejl<\/h3>\n<p>N\u00e5r en bruger indsender en formular med forkerte v\u00e6rdier, og den sendes til serveren til validering, returnerer du brugeren til formularens side med et blink af valideringsfejl i sessionen. Inertia opfanger fejl fra sessionen og gemmer dem som sideprops.<\/p>\n<p>Da props er reaktive, vises de, n\u00e5r indsendelsen af formularen er afsluttet. For at Inertia kan opdage eksistensen af fejl, holder den \u00f8je med <code>page.props.errors<\/code>.<\/p>\n<p>N\u00e5r den har fundet fejl, leverer den derefter en <code>onError()<\/code> callback i stedet for <code>onSuccess()<\/code>.<\/p>\n<p>Her er et eksempel med Vue 3 for at hj\u00e6lpe dig med at forst\u00e5 konceptet:<\/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>Visning af fejl er s\u00e5 let som at definere dem som props og vise dem betinget i din 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>N\u00e5r du bruger Inertia, beh\u00f8ver du ikke at bekymre dig om gamle inputdata i tilf\u00e6lde af fejl. N\u00e5r Inertia registrerer, at brugeren er blevet omdirigeret til siden med fejl, bevarer den automatisk komponentens gamle tilstand for <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> og <code>DELETE<\/code>.<\/p>\n<h3>Delvise reloads med Inertia.js<\/h3>\n<p>Inertias funktionalitet til delvis genindl\u00e6sning er ganske enkelt fremragende, da den kun genindl\u00e6ser en udvalgt komponent p\u00e5 siden i stedet for at hente hele datas\u00e6ttet fra serveren igen. Dette tager din applikationsoptimering til det n\u00e6ste niveau. Du kan ogs\u00e5 bes\u00f8ge f\u00f8lgende link for at f\u00e5 mere at vide om hvordan du <a href=\"https:\/\/kinsta.com\/dk\/blog\/laravel-ydeevnen\/\">optimerer din Laravel-applikations ydeevne<\/a>.<\/p>\n<p>Delvise genindl\u00e6sninger kan udf\u00f8res ved hj\u00e6lp af Inertia&#8217;s <code>only<\/code> egenskab:<\/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>Eksterne omdirigeringer med Inertia.js<\/h3>\n<p>Underdom\u00e6ne-routing, eller ekstern omdirigering, er en af de mest frustrerende udfordringer med SPA&#8217;er. Det er irrationelt at forvente, at din applikation forbliver en single-page applikation, mens du ogs\u00e5 bes\u00f8ger et andet dom\u00e6ne.<\/p>\n<p>Det kan v\u00e6re n\u00f8dvendigt at omdirigere en Inertia-foresp\u00f8rgsel til et eksternt websted eller endog et andet ikke-Inertia-slutpunkt i din app. Dette er muligt gennem et server-side-initieret <code>window.location<\/code> bes\u00f8g:<\/p>\n<pre><code class=\"language-php\">\nreturn Inertia::location($url);\n<\/code><\/pre>\n<p>Hvis du \u00e5bner konsollen under afpr\u00f8vning af dette, vil du opdage, at det returnerer <code>409 conflict<\/code>. Dette svar indeholder URL&#8217;en i <code>X-Inertia-Location<\/code>-headeren, som Inertia vil registrere p\u00e5 klientsiden og automatisk udf\u00f8re bes\u00f8get.<\/p>\n<h2>S\u00e5dan arbejder du med Inertia.js<\/h2>\n<p>At arbejde med Inertia svarer til at arbejde med en server-side applikation, med den undtagelse at det er en fuldt reaktiv single-page applikation. Du b\u00f8r v\u00e6re i stand til at definere dine ruter, tilpasse controllere og returnere en visning, som Inertia skal sende til din frontend-framework.<\/p>\n<h3>Laravel-ruter og Inertia.js<\/h3>\n<p>Laravel-routing er ikke noget, du \u00f8nsker at opgive, n\u00e5r du udvikler din applikation; det giver dig mulighed for hurtigt at konstruere de mest komplekse ruter, og der er masser af <a href=\"https:\/\/kinsta.com\/dk\/blog\/laravel-tutorial\/\">gratis og betalte Laravel-ressourcer<\/a> derude, der kan hj\u00e6lpe dig med at l\u00e6re mere om Laravel og hvordan routing fungerer.<\/p>\n<p>Det smukke her er, at du ikke beh\u00f8ver Vue Router eller React Router for at udf\u00f8re simpel klient-side routing, fordi Inertia har sit eget routing-system, der fungerer med Laravel-routing. Hvis jobbet ikke kr\u00e6ver nogen backend-data, kan du bruge router-hj\u00e6lperen til at route direkte til en komponent.<\/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>F\u00f8r vi g\u00e5r videre, vil vi gerne pr\u00e6sentere dig for <a href=\"https:\/\/kinsta.com\/dk\/devkinsta\/\">DevKinsta<\/a>, et kraftfuldt v\u00e6rkt\u00f8j til udviklere, designere og bureauer, der g\u00f8r det muligt for dem at konstruere WordPress-webapps med en eller flere sider. Heldigvis kan WordPress integreres med Laravel ved hj\u00e6lp af <a href=\"https:\/\/github.com\/corcel\/corcel\" target=\"_blank\" rel=\"noopener noreferrer\">Corcel-pakken<\/a>. Hvis du bygger en Laravel-app med WordPress-integration, skal du tjekke <a href=\"https:\/\/kinsta.com\/dk\/apm-tool\/\">Kinsta APM Tool<\/a> for ekstraordin\u00e6r overv\u00e5gning af ydeevne.<\/p>\n<h3>Omdirigerer<\/h3>\n<p>Du b\u00f8r altid omdirigere brugeren til den korrekte sti, der svarer til den oprindelige anmodning. Hvis en bruger f.eks. sender til <code>store<\/code> endpoint for at indsende et indl\u00e6g, skal du s\u00f8rge for at omdirigere kunden til <code>GET<\/code> endpoint m\u00e5ske til indl\u00e6gsruten.<\/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>Ulemper ved at bruge Inertia.js<\/h2>\n<p>Indtil videre har vi fokuseret p\u00e5 de mange fordele ved at bruge Inertia. Men som med ethvert v\u00e6rkt\u00f8j har Inertia ogs\u00e5 et par ulemper.<\/p>\n<ul>\n<li>Brugeren skal have grundl\u00e6ggende kendskab til Vue eller React.<\/li>\n<li>Da modeldata kan overf\u00f8res fuldst\u00e6ndigt til klientsiden, skal brugeren s\u00f8rge for eksplicit at returnere de relevante data til frontend&#8217;en.<\/li>\n<li>API&#8217;er skal genskabes, hvis webapplikationen p\u00e5 et tidspunkt skal have en Android- eller iOS-applikation.<\/li>\n<\/ul>\n<h2>Skal du bruge Inertia.js?<\/h2>\n<p>For at besvare sp\u00f8rgsm\u00e5let om, hvorvidt du b\u00f8r bruge Inertia eller ej, er svaret ja, hvis du \u00f8nsker at bygge en enkeltsidet, server-side, SEO-drevet moderne app.<\/p>\n<p>Du kan f\u00e5 mere at vide ved at bes\u00f8ge det <a href=\"https:\/\/inertiajs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">officielle Inertia.js-websted<\/a> og l\u00e6se dokumentationen.<\/p>\n\n<h2>Opsummering<\/h2>\n<p>Klient-side apps og SPA&#8217;er bliver mere og mere popul\u00e6re i takt med udviklingen af webteknologier, mens server-side traditionelle applikationer er begyndt at falde p\u00e5 gulvet. Mere end nogensinde f\u00f8r er det vigtigt at have de rigtige v\u00e6rkt\u00f8jer ved h\u00e5nden.<\/p>\n<p>Inertia er en fantastisk moderne tilgang eller l\u00f8sning for server-side udviklere til at bygge single-page apps. Det l\u00f8ser s\u00e5 mange problemer og sparer dig s\u00e5 meget tid.<\/p>\n<p>Som vi diskuterede i vores artikel, underst\u00f8tter Inertia nu server-side rendering, hvilket tager det til et helt nyt niveau ved at give udviklere mulighed for at skabe SEO-drevne SPA&#8217;er.<\/p>\n<p>Inertia modtager ogs\u00e5 en masse k\u00e6rlighed fra f\u00e6llesskabet. Udviklingsindsatsen er sponsoreret af Laravel Forge, Laracasts og en r\u00e6kke andre fine organisationer. Som et resultat heraf er Inertia et p\u00e5lideligt v\u00e6rkt\u00f8j, der vil blive forbedret og vedligeholdt i fremtiden for <a href=\"https:\/\/kinsta.com\/blog\/laravel-developer\/\">Laravel-udviklere<\/a>, is\u00e6r da <a href=\"https:\/\/kinsta.com\/blog\/laravel-developer-salary\/\">eftersp\u00f8rgslen efter Laravel-kodere<\/a> forts\u00e6tter med at vokse.<\/p>\n<p>Og hvis du leder efter dit Intertia-drevne projekts n\u00e6ste hjem, kan du tjekke Kinsta&#8217;s tilbud om <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applikation Hosting<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Single-page applications (SPA&#8217;er) er blevet den moderne m\u00e5de at skabe webapplikationer p\u00e5, og Inertia.js er et f\u00f8rende v\u00e6rkt\u00f8j, der g\u00f8r det muligt for udviklere at skabe &#8230;<\/p>\n","protected":false},"author":266,"featured_media":47133,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[599,559,600,197],"topic":[706],"class_list":["post-46462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-inertia-js","tag-javascript","tag-node-js","tag-web-development","topic-javascript-tutorials"],"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>Den ultimative guide til Inertia.js - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.\" \/>\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\/dk\/blog\/inertia-js\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Den ultimative guide til Inertia.js\" \/>\n<meta property=\"og:description\" content=\"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T11:09:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:03:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/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=\"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_dk\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_dk\" \/>\n<meta name=\"twitter:label1\" content=\"Skrevet af\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimeret l\u00e6setid\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"Den ultimative guide til Inertia.js\",\"datePublished\":\"2022-11-07T11:09:02+00:00\",\"dateModified\":\"2025-10-01T19:03:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/\"},\"wordCount\":2676,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg\",\"keywords\":[\"inertia.js\",\"JavaScript\",\"node.js\",\"web development\"],\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/\",\"url\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/\",\"name\":\"Den ultimative guide til Inertia.js - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg\",\"datePublished\":\"2022-11-07T11:09:02+00:00\",\"dateModified\":\"2025-10-01T19:03:59+00:00\",\"description\":\"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Den ultimative guide til Inertia.js\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/dk\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript tutorials\",\"item\":\"https:\/\/kinsta.com\/dk\/emner\/javascript-tutorials\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Den ultimative guide til Inertia.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/dk\/#website\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Hurtig, sikker, premium hostingl\u00f8sninger\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/dk\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\",\"https:\/\/x.com\/kinsta_dk\",\"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\/dk\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Den ultimative guide til Inertia.js - Kinsta\u00ae","description":"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.","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\/dk\/blog\/inertia-js\/","og_locale":"da_DK","og_type":"article","og_title":"Den ultimative guide til Inertia.js","og_description":"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.","og_url":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","article_published_time":"2022-11-07T11:09:02+00:00","article_modified_time":"2025-10-01T19:03:59+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg","type":"image\/jpeg"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.","twitter_image":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg","twitter_creator":"@kinsta_dk","twitter_site":"@kinsta_dk","twitter_misc":{"Skrevet af":"Mostafa Said","Estimeret l\u00e6setid":"16 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"Den ultimative guide til Inertia.js","datePublished":"2022-11-07T11:09:02+00:00","dateModified":"2025-10-01T19:03:59+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/"},"wordCount":2676,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg","keywords":["inertia.js","JavaScript","node.js","web development"],"inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/","url":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/","name":"Den ultimative guide til Inertia.js - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg","datePublished":"2022-11-07T11:09:02+00:00","dateModified":"2025-10-01T19:03:59+00:00","description":"Et kig p\u00e5, hvordan Inertia.js g\u00f8r konstruktion af enkeltsidede applikationer til en leg, mens det l\u00f8ser andre problemer for udviklere.","breadcrumb":{"@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/dk\/blog\/inertia-js\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#primaryimage","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2022\/11\/inertia-js.jpeg","width":1460,"height":730,"caption":"Den ultimative guide til Inertia.js"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/dk\/blog\/inertia-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/dk\/"},{"@type":"ListItem","position":2,"name":"JavaScript tutorials","item":"https:\/\/kinsta.com\/dk\/emner\/javascript-tutorials\/"},{"@type":"ListItem","position":3,"name":"Den ultimative guide til Inertia.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/dk\/#website","url":"https:\/\/kinsta.com\/dk\/","name":"Kinsta\u00ae","description":"Hurtig, sikker, premium hostingl\u00f8sninger","publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/dk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/dk\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/dk\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","https:\/\/x.com\/kinsta_dk","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\/dk\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/46462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/comments?post=46462"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/46462\/revisions"}],"predecessor-version":[{"id":50415,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/46462\/revisions\/50415"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/translations\/dk"},{"href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/46462\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media\/47133"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media?parent=46462"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/tags?post=46462"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/topic?post=46462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}