{"id":63004,"date":"2022-11-07T12:03:47","date_gmt":"2022-11-07T11:03:47","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=63004&#038;post_type=knowledgebase&#038;preview_id=63004"},"modified":"2025-10-01T20:44:34","modified_gmt":"2025-10-01T19:44:34","slug":"inertia-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/","title":{"rendered":"Le guide ultime d&rsquo;Inertia.js"},"content":{"rendered":"<p>Les applications monopages (Single-Page Applications ou SPA) sont devenues la mani\u00e8re moderne de cr\u00e9er des applications web, et Inertia.js est un outil de premier plan permettant aux d\u00e9veloppeurs de cr\u00e9er des SPA avec un rendu \u00e0 la fois c\u00f4t\u00e9 client et c\u00f4t\u00e9 serveur.<\/p>\n<p>Dans cet article, nous verrons comment Inertia fait de la construction de SPA un jeu d&rsquo;enfant et comment il r\u00e9sout de nombreux autres probl\u00e8mes pour les d\u00e9veloppeurs. Nous couvrirons \u00e9galement les principales fonctionnalit\u00e9s de l&rsquo;outil.<\/p>\n<p>Mais avant de commencer, assurons-nous d&rsquo;abord que nous comprenons le fonctionnement des applications c\u00f4t\u00e9 serveur et c\u00f4t\u00e9 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>Qu&rsquo;est-ce que le rendu c\u00f4t\u00e9 serveur ?<\/h2>\n<p>On parle de rendu c\u00f4t\u00e9 serveur (Server-Side Rendering ou SSR) lorsqu&rsquo;une application peut rendre ou afficher le contenu d&rsquo;une page web sur le serveur plut\u00f4t que dans le navigateur. Lorsqu&rsquo;un utilisateur tente de visiter le site <strong>exemple.com<\/strong>, le navigateur envoie une requ\u00eate au serveur demandant toutes les informations n\u00e9cessaires pour afficher cette page web sp\u00e9cifique, et le serveur r\u00e9pond instantan\u00e9ment en fournissant au navigateur une page enti\u00e8rement rendue.<\/p>\n<p>Les moteurs de recherche interviennent et indexent les informations fournies par le serveur avant qu&rsquo;elles n&rsquo;atteignent le navigateur ; c&rsquo;est ce qu&rsquo;on appelle l&rsquo;optimisation des moteurs de recherche (Search Engine Optimization ou SEO). Le navigateur r\u00e9sout ensuite le contenu JavaScript, et la page web s&rsquo;affiche pour l&rsquo;utilisateur.<\/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=\"Affichage du contenu rendu c\u00f4t\u00e9 serveur.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133545\" class=\"wp-caption-text\">Affichage du contenu rendu c\u00f4t\u00e9 serveur.<\/figcaption><\/figure>\n<p>Le probl\u00e8me de l&rsquo;approche SSR est qu&rsquo;il faut beaucoup de temps pour charger une page enti\u00e8rement rendue depuis le serveur, ce qui n&rsquo;offre pas une exp\u00e9rience utilisateur agr\u00e9able. C&rsquo;est pourquoi les d\u00e9veloppeurs envisagent les SPA et le rendu c\u00f4t\u00e9 client.<\/p>\n\n<h2>Qu&rsquo;est-ce que le rendu c\u00f4t\u00e9 client ?<\/h2>\n<p>Le rendu c\u00f4t\u00e9 client permet au navigateur d&rsquo;avoir tout ce dont il a besoin pour rendre la page web du c\u00f4t\u00e9 client au lieu de recevoir une page enti\u00e8rement rendue du serveur. Lorsque la page est charg\u00e9e, le navigateur n&rsquo;envoie pas d&rsquo;autres requ\u00eates au serveur, ce qui rend l&rsquo;exp\u00e9rience de navigation extr\u00eamement rapide.<\/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=\"Affichage du contenu rendu c\u00f4t\u00e9 client.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133546\" class=\"wp-caption-text\">Affichage du contenu rendu c\u00f4t\u00e9 client.<\/figcaption><\/figure>\n<p>Le rendu c\u00f4t\u00e9 client a contribu\u00e9 \u00e0 la cr\u00e9ation des SPA, r\u00e9volutionnant ainsi le web. Vous pouvez cr\u00e9er un site web qui ne n\u00e9cessite pas le rechargement de la page, quel que soit le nombre de liens sur lesquels vous cliquez. Il permet \u00e0 l&rsquo;utilisateur de naviguer facilement sur le site web.<\/p>\n<p>Bien que les SPA soient fantastiques, cette approche pr\u00e9sente beaucoup de complexit\u00e9 et de probl\u00e8mes que nous allons aborder aujourd&rsquo;hui. Inertia r\u00e9sout la majorit\u00e9 de ces probl\u00e8mes en utilisant efficacement les frameworks c\u00f4t\u00e9 serveur. Elle combine les meilleures caract\u00e9ristiques des applications c\u00f4t\u00e9 serveur et c\u00f4t\u00e9 client.<\/p>\n<h2>Qu&rsquo;est-ce qu&rsquo;Inertia.js ?<\/h2>\n<p>Inertia n&rsquo;est pas un <a href=\"https:\/\/kinsta.com\/fr\/blog\/bibliotheques-javascript\/\">framework JavaScript<\/a>. Il s&rsquo;agit plut\u00f4t d&rsquo;une strat\u00e9gie ou d&rsquo;une technique de d\u00e9veloppement de SPA. Elle permet au d\u00e9veloppeur d&rsquo;utiliser les frameworks c\u00f4t\u00e9 serveur actuels pour construire un SPA moderne sans la complexit\u00e9 qui l&rsquo;accompagne.<\/p>\n<p>Inertia a \u00e9t\u00e9 con\u00e7u pour accompagner, et non remplacer, les frameworks que vous utilisez d\u00e9j\u00e0. Consid\u00e9rez-le comme un alli\u00e9 utile qui vous aide \u00e0 accomplir des t\u00e2ches plus rapidement et plus efficacement. Il prend actuellement en charge trois frameworks frontend (Vue, React et Svelte) pour le rendu c\u00f4t\u00e9 client et deux frameworks backend (Laravel et Rails) pour le rendu c\u00f4t\u00e9 serveur.<\/p>\n<p>Pour la plupart des <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-laravel\/\">d\u00e9veloppeurs Laravel<\/a>, Inertia est l&rsquo;une des techniques les plus fiables pour construire des SPA puisqu&rsquo;elle leur permet de connecter \u00e0 la fois les frameworks frontend et backend.<\/p>\n<h2>Comment fonctionne Inertia.js ?<\/h2>\n<p>Inertia est similaire \u00e0 Vue Router, en ce sens qu&rsquo;il vous permet de vous d\u00e9placer entre les pages sans avoir \u00e0 recharger la page enti\u00e8re. Toutefois, Inertia fonctionne en synchronisation avec votre framework c\u00f4t\u00e9 serveur. Cela est possible gr\u00e2ce \u00e0 <code>Link<\/code>, une enveloppe pour la balise d&rsquo;ancrage standard. Lorsqu&rsquo;on clique sur une <code>Link<\/code>, Inertia intercepte l&rsquo;\u00e9v\u00e9nement de clic et envoie une requ\u00eate XHR au serveur, ce dernier reconnaissant qu&rsquo;il s&rsquo;agit d&rsquo;une requ\u00eate Inertia et renvoyant une r\u00e9ponse JSON. Cette r\u00e9ponse comprend le nom et les donn\u00e9es du composant JavaScript, apr\u00e8s quoi Inertia supprime comme par magie les composants inutiles et les remplace par ceux n\u00e9cessaires \u00e0 la visite de la nouvelle page et met \u00e0 jour l&rsquo;\u00e9tat de l&rsquo;historique.<\/p>\n<h3>Une plong\u00e9e profonde dans la fonctionnalit\u00e9 d&rsquo;Inertia.js<\/h3>\n<p>Lorsqu&rsquo;un visiteur se rend pour la premi\u00e8re fois sur <strong>exemple.com<\/strong>, le navigateur effectue une requ\u00eate pleine page standard et le serveur renvoie une r\u00e9ponse HTML compl\u00e8te comme si Inertia n&rsquo;existait pas. Cette r\u00e9ponse HTML comporte tous les actifs du site (CSS, JavaScript), mais elle contient \u00e9galement une ressource suppl\u00e9mentaire pour Inertia, qui est la racine <code>div<\/code> avec l&rsquo;attribut <code>data-page<\/code> contenant les donn\u00e9es JSON de la page initiale. Inertia utilise ensuite ces donn\u00e9es JSON pour lancer le framework frontend et afficher la page initiale.<\/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 : R\u00e9ponse \u00e0 la visite de la page initiale.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133547\" class=\"wp-caption-text\">Inertia.js : R\u00e9ponse \u00e0 la visite de la page initiale.<\/figcaption><\/figure>\n<p>Une fois l&rsquo;application d\u00e9marr\u00e9e, chaque route que l&rsquo;utilisateur visite \u00e0 l&rsquo;int\u00e9rieur du m\u00eame domaine en utilisant <code>Link<\/code> sera une requ\u00eate XHR avec l&rsquo;en-t\u00eate <code>X-Inertia<\/code>. Cela indique au serveur qu&rsquo;il s&rsquo;agit d&rsquo;une requ\u00eate Inertia.<\/p>\n<p>Le retour d&rsquo;information sera une r\u00e9ponse JSON avec le contenu de la page, plut\u00f4t qu&rsquo;une r\u00e9ponse HTML compl\u00e8te comme lors de la visite initiale.<\/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 : R\u00e9ponse de la visite ult\u00e9rieure de l'itin\u00e9raire.\" width=\"950\" height=\"500\"><figcaption id=\"caption-attachment-133548\" class=\"wp-caption-text\">Inertia.js : R\u00e9ponse de la visite ult\u00e9rieure de l&rsquo;itin\u00e9raire.<\/figcaption><\/figure>\n<h2>Quels probl\u00e8mes Inertia.js r\u00e9sout-il ?<\/h2>\n<p>Inertia r\u00e9sout un grand nombre de probl\u00e8mes pour les d\u00e9veloppeurs web. Le but de la cr\u00e9ation d&rsquo;Inertia \u00e9tait de donner des solutions rapides et efficaces \u00e0 toute la complexit\u00e9 qui accompagne la conception d&rsquo;un SPA.<\/p>\n<h3>Complexit\u00e9s des SPA<\/h3>\n<p>Si les d\u00e9veloppeurs devaient construire un SPA sans Inertia, ils devraient cr\u00e9er des API REST ou GraphQL et les prot\u00e9ger avec une sorte de m\u00e9thode d&rsquo;authentification, ce qui n\u00e9cessiterait la cr\u00e9ation d&rsquo;un syst\u00e8me de gestion d&rsquo;\u00e9tat frontend, parmi beaucoup d&rsquo;autres choses.<\/p>\n<p>Inertia a \u00e9t\u00e9 con\u00e7u pour aider les d\u00e9veloppeurs \u00e0 transformer leurs applications c\u00f4t\u00e9 serveur fonctionnant enti\u00e8rement sur le serveur backend en une application JavaScript \u00e0 page unique sans avoir \u00e0 passer par toutes les complexit\u00e9s qui accompagnent la cr\u00e9ation de SPA.<\/p>\n<p>Cr\u00e9er une SPA \u00e0 l&rsquo;aide d&rsquo;Inertia est similaire \u00e0 la cr\u00e9ation d&rsquo;une application rendue c\u00f4t\u00e9 serveur. Vous cr\u00e9ez des contr\u00f4leurs, effectuez des requ\u00eates aupr\u00e8s de la base de donn\u00e9es pour obtenir les donn\u00e9es n\u00e9cessaires, puis renvoyez les r\u00e9sultats aux vues.<\/p>\n<p>La cl\u00e9 ici est que les vues sont des composants JavaScript. Cela signifie que vous obtenez les donn\u00e9es de votre serveur, puis Inertia travaille avec le framework frontend pour afficher la page contenant les donn\u00e9es sous forme de fichier JavaScript, ce qui \u00e9limine le besoin de cr\u00e9er des API.<\/p>\n<h3>Authentification<\/h3>\n<p>Comme Inertia alimente l&rsquo;application avec des donn\u00e9es et des r\u00e9ponses provenant du backend, elle utilisera simplement le syst\u00e8me d&rsquo;authentification que vous avez c\u00f4t\u00e9 serveur. Cela signifie que vous n&rsquo;aurez pas \u00e0 vous soucier de l&rsquo;authentification c\u00f4t\u00e9 client \u2014 vous aurez \u00e0 la place un syst\u00e8me d&rsquo;authentification bas\u00e9 sur la session qui se synchronise avec votre syst\u00e8me d&rsquo;authentification c\u00f4t\u00e9 serveur.<\/p>\n<h3>Probl\u00e8mes de SEO<\/h3>\n<p>Comme expliqu\u00e9 pr\u00e9c\u00e9demment pour le rendu c\u00f4t\u00e9 serveur, les moteurs de recherche interceptent la r\u00e9ponse du serveur au navigateur pour indexer le contenu HTML de la page web. Dans le cas d&rsquo;un SPA, les moteurs de recherche auront du mal \u00e0 identifier le contenu de la page puisque le serveur r\u00e9pondra avec des composants JavaScript et des donn\u00e9es JSON.<\/p>\n<p>Mais Inertia a r\u00e9solu ce probl\u00e8me en introduisant la <a href=\"https:\/\/inertiajs.com\/server-side-rendering\" target=\"_blank\" rel=\"noopener noreferrer\">fonction de rendu c\u00f4t\u00e9 serveur (SSR)<\/a> que vous pouvez ajouter \u00e0 votre application. Inertia utilise l&rsquo;environnement Node.js comme d\u00e9clencheur pour convertir la r\u00e9ponse en donn\u00e9es JSON en HTML.<\/p>\n<p>Pour mieux illustrer cela, imaginez Inertia assis entre le serveur et le navigateur, en train de regarder. Lorsque le serveur re\u00e7oit une requ\u00eate Inertia et renvoie une r\u00e9ponse JSON, Inertia d\u00e9tecte l&rsquo;existence d&rsquo;un serveur Node.js, transforme la r\u00e9ponse JSON en HTML et la renvoie, permettant ainsi aux moteurs de recherche d&rsquo;indexer la page comme si l&rsquo;application n&rsquo;\u00e9tait pas un SPA.<\/p>\n<p>Inertia fournit \u00e9galement un composant <code>Head<\/code>, qui vous permet d&rsquo;ajouter un titre et des m\u00e9tadonn\u00e9es \u00e0 votre page :<\/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>Voici un autre exemple tir\u00e9 de la <a href=\"https:\/\/inertiajs.com\/title-and-meta\" target=\"_blank\" rel=\"noopener noreferrer\">documentation en ligne d&rsquo;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>Formulaires et Form Helper<\/h3>\n<p>Il est possible d&rsquo;envoyer une demande de formulaire standard tout en utilisant Inertia. Cependant, cela entra\u00eenera un rafra\u00eechissement de la page enti\u00e8re.<\/p>\n<p>Inertia permet aux utilisateurs de faire des demandes de formulaire en utilisant Inertia, ce qui supprime la possibilit\u00e9 de rafra\u00eechissement de la page. Une fois que le formulaire est soumis avec Inertia, il est trait\u00e9 c\u00f4t\u00e9 serveur, ce qui vous lib\u00e8re pour rediriger l&rsquo;utilisateur vers la m\u00eame page (ou une page compl\u00e8tement diff\u00e9rente).<\/p>\n<p>Inertia nous facilite la vie lors de la cr\u00e9ation et de l&rsquo;envoi de formulaires. Voici un exemple sur la fa\u00e7on dont vous pouvez l&rsquo;utiliser avec l&rsquo;API de composition 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>Vous pouvez soumettre le formulaire avec <code>GET<\/code>, <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> et <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&rsquo;aide de formulaire d&rsquo;Inertia offre \u00e9galement quelques propri\u00e9t\u00e9s utiles telles que la propri\u00e9t\u00e9 <code>processing<\/code> qui se transforme en <code>true<\/code> une fois que le formulaire commence \u00e0 \u00eatre trait\u00e9. Ceci peut \u00eatre utilis\u00e9 pour d\u00e9sactiver les boutons d&rsquo;envoi pendant le traitement du formulaire afin d&rsquo;\u00e9viter les envois multiples :<\/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>Vous pouvez \u00e9galement utiliser <code>preserveState<\/code>, <code>preserveScroll<\/code> et des rappels d&rsquo;\u00e9v\u00e9nements avec le formulaire, ce qui sera utile pour ajouter des options suppl\u00e9mentaires au formulaire :<\/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>Se souvenir de l&rsquo;\u00e9tat avec Inertia.js<\/h3>\n<p>Disons qu&rsquo;un utilisateur remplit un formulaire sur votre site web et d\u00e9cide de naviguer vers une autre page avant de l&rsquo;envoyer. Lorsqu&rsquo;il revient \u00e0 la page du formulaire, la saisie du formulaire de l&rsquo;utilisateur sera r\u00e9initialis\u00e9e.<\/p>\n<p>Heureusement, Inertia fournit la fonction <code>useRemember<\/code>, qui vous permet de sauvegarder les entr\u00e9es de formulaire de l&rsquo;utilisateur dans l&rsquo;\u00e9tat historique et de les restaurer lors de la navigation historique.<\/p>\n<p>Vous pouvez utiliser cette fonctionnalit\u00e9 en l&rsquo;important depuis Inertia et en l&rsquo;appliquant \u00e0 votre formulaire :<\/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 vous avez une page avec de nombreux formulaires qui utilisent la fonctionnalit\u00e9 <code>useRemember<\/code>, chaque composant doit avoir une cl\u00e9 unique afin qu&rsquo;Inertia sache quelles donn\u00e9es restaurer dans chaque composant :<\/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>Nous n&rsquo;avons pas besoin d&rsquo;utiliser la fonctionnalit\u00e9 <code>useRemember<\/code> lorsque nous utilisons l&rsquo;aide de formulaire d&rsquo;Inertia. Inertia se souviendra automatiquement de l&rsquo;\u00e9tat de l&rsquo;entr\u00e9e du formulaire, nous devons donc simplement donner un identifiant unique :<\/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&rsquo;aspect agr\u00e9able de cette fonctionnalit\u00e9 est que vous pouvez vous souvenir manuellement de n&rsquo;importe quelle donn\u00e9e dans votre application. Cela peut \u00e9galement \u00eatre utile pour transmettre des donn\u00e9es d&rsquo;un composant profond\u00e9ment imbriqu\u00e9 au composant 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>T\u00e9l\u00e9versements de fichiers<\/h3>\n<p>Inertia d\u00e9tecte si le formulaire inclut des fichiers et, si c&rsquo;est le cas, transforme les donn\u00e9es de la requ\u00eate en objet <code>formData<\/code>, ce qui est toujours n\u00e9cessaire. Ainsi, si vous avez un formulaire qui inclut un nom et un avatar, Inertia traitera le formulaire comme <code>multipart\/form-data<\/code>.<\/p>\n<h3>Validation et erreurs<\/h3>\n<p>Lorsqu&rsquo;un utilisateur envoie un formulaire avec des valeurs incorrectes et qu&rsquo;il est envoy\u00e9 au serveur pour validation, vous renvoyez l&rsquo;utilisateur \u00e0 la page du formulaire avec un flash des erreurs de validation dans la session. Inertia capture les erreurs de la session et les enregistre comme props de la page.<\/p>\n<p>Comme les props sont r\u00e9actifs, ils apparaissent lorsque l&rsquo;envoi du formulaire est termin\u00e9. Pour qu&rsquo;Inertia puisse d\u00e9tecter l&rsquo;existence d&rsquo;erreurs, elle garde un \u0153il sur <code>page.props.errors<\/code>.<\/p>\n<p>Une fois qu&rsquo;il a trouv\u00e9 des erreurs, il fournit alors un callback <code>onError()<\/code> au lieu de <code>onSuccess()<\/code>.<\/p>\n<p>Voici un exemple avec Vue 3 pour vous aider \u00e0 comprendre le concept :<\/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>Afficher les erreurs est aussi simple que de les d\u00e9finir en tant que props et de les afficher conditionnellement dans votre 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>En utilisant Inertia, vous n&rsquo;avez pas \u00e0 vous soucier des anciennes donn\u00e9es d&rsquo;entr\u00e9e en cas d&rsquo;erreurs. D\u00e8s qu&rsquo;Inertia d\u00e9tecte que l&rsquo;utilisateur a \u00e9t\u00e9 redirig\u00e9 vers la page contenant des erreurs, il pr\u00e9serve automatiquement l&rsquo;ancien \u00e9tat du composant pour <code>POST<\/code>, <code>PUT<\/code>, <code>PATCH<\/code> et <code>DELETE<\/code>.<\/p>\n<h3>Rechargments partiels avec Inertia.js<\/h3>\n<p>La fonctionnalit\u00e9 de rechargement partiel d&rsquo;Inertia est tout simplement excellente puisqu&rsquo;elle ne recharge qu&rsquo;un composant s\u00e9lectionn\u00e9 sur la page plut\u00f4t que de r\u00e9cup\u00e9rer \u00e0 nouveau l&rsquo;ensemble des donn\u00e9es du serveur. L&rsquo;optimisation de votre application passe ainsi au niveau sup\u00e9rieur. Vous pouvez \u00e9galement visiter le lien suivant pour en savoir plus sur la fa\u00e7on d&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/methodes-optimisation-performances-laravel\/\">optimiser les performances de votre application Laravel<\/a>.<\/p>\n<p>Les rechargements partiels peuvent \u00eatre effectu\u00e9s en utilisant la propri\u00e9t\u00e9 <code>only<\/code> d&rsquo;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>Redirections externes avec Inertia.js<\/h3>\n<p>Le routage par sous-domaine, ou redirection externe, est l&rsquo;un des d\u00e9fis les plus frustrants des SPA. Il est irrationnel d&rsquo;attendre de votre application qu&rsquo;elle reste une application \u00e0 page unique tout en visitant un domaine diff\u00e9rent.<\/p>\n<p>Il peut \u00eatre n\u00e9cessaire de rediriger une requ\u00eate Inertia vers un site web externe ou m\u00eame vers un autre point de terminaison non Inertia dans votre application. Ceci est possible par le biais d&rsquo;une visite <code>window.location<\/code> initi\u00e9e c\u00f4t\u00e9 serveur :<\/p>\n<pre><code class=\"language-php\">\nreturn Inertia::location($url);\n<\/code><\/pre>\n<p>Si vous ouvrez la console pendant que vous testez cette op\u00e9ration, vous constaterez qu&rsquo;elle renvoie <code>409 conflict<\/code>. Cette r\u00e9ponse contient l&rsquo;URL dans l&rsquo;en-t\u00eate <code>X-Inertia-Location<\/code>, qu&rsquo;Inertia d\u00e9tectera du c\u00f4t\u00e9 client et effectuera automatiquement la visite.<\/p>\n<h2>Comment travailler avec Inertia.js<\/h2>\n<p>Le travail avec Inertia est similaire au travail sur une application c\u00f4t\u00e9 serveur, \u00e0 l&rsquo;exception du fait qu&rsquo;il s&rsquo;agit d&rsquo;une application mono-page enti\u00e8rement r\u00e9active. Vous devriez \u00eatre en mesure de d\u00e9finir vos routes, de personnaliser les contr\u00f4leurs et de renvoyer une vue qu&rsquo;Inertia enverra \u00e0 votre framework frontend.<\/p>\n<h3>Routes Laravel et Inertia.js<\/h3>\n<p>Le routage Laravel n&rsquo;est pas quelque chose que vous voulez abandonner lors du d\u00e9veloppement de votre application ; il vous permet de construire rapidement les routes les plus complexes, et il existe de nombreuses <a href=\"https:\/\/kinsta.com\/fr\/blog\/tutoriels-laravel\/\">ressources Laravel gratuites et payantes<\/a> qui peuvent vous aider \u00e0 en apprendre davantage sur Laravel et le fonctionnement du routage.<\/p>\n<p>La beaut\u00e9 de la chose, c&rsquo;est que vous n&rsquo;avez pas besoin de Vue Router ou React Router pour effectuer un routage simple c\u00f4t\u00e9 client, car Inertia poss\u00e8de son propre syst\u00e8me de routage qui fonctionne avec le routage Laravel. Si la t\u00e2che ne n\u00e9cessite pas de donn\u00e9es backend, vous pouvez utiliser l&rsquo;aide de routage pour router directement vers un composant.<\/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>Avant de poursuivre, nous aimerions vous pr\u00e9senter <a href=\"https:\/\/kinsta.com\/fr\/devkinsta\/\">DevKinsta<\/a>, un outil puissant pour les d\u00e9veloppeurs, les concepteurs et les agences qui leur permet de construire des applications web WordPress \u00e0 une ou plusieurs pages. Heureusement, WordPress peut \u00eatre int\u00e9gr\u00e9 \u00e0 Laravel \u00e0 l&rsquo;aide du package <a href=\"https:\/\/github.com\/corcel\/corcel\" target=\"_blank\" rel=\"noopener noreferrer\">Corcel<\/a>. Si vous construisez une application Laravel avec int\u00e9gration de WordPress, consultez l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/outil-apm\/\">outil APM de Kinsta<\/a> pour une surveillance extraordinaire des performances.<\/p>\n<h3>Redirections<\/h3>\n<p>Vous devez toujours rediriger l&rsquo;utilisateur vers le chemin correct qui correspond \u00e0 la requ\u00eate initiale. Par exemple, si un utilisateur se soumet au point de terminaison <code>store<\/code> pour envoyer un article, assurez-vous de rediriger le client vers le point de terminaison <code>GET<\/code> peut-\u00eatre vers la route de l&rsquo;article.<\/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>Inconv\u00e9nients de l&rsquo;utilisation d&rsquo;Inertia.js<\/h2>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent, nous nous sommes concentr\u00e9s sur les nombreux avantages de l&rsquo;utilisation d&rsquo;Inertia. Toutefois, comme tout outil, Inertia pr\u00e9sente \u00e9galement des inconv\u00e9nients.<\/p>\n<ul>\n<li>L&rsquo;utilisateur doit avoir des connaissances de base de Vue ou React.<\/li>\n<li>Comme les donn\u00e9es du mod\u00e8le peuvent \u00eatre enti\u00e8rement transmises au c\u00f4t\u00e9 client, l&rsquo;utilisateur doit s&rsquo;assurer de renvoyer explicitement les donn\u00e9es pertinentes au frontend.<\/li>\n<li>Les API doivent \u00eatre recr\u00e9\u00e9es si l&rsquo;application web doit avoir une application Android ou iOS \u00e0 un moment donn\u00e9.<\/li>\n<\/ul>\n<h2>Devriez-vous utiliser Inertia.js ?<\/h2>\n<p>Pour r\u00e9pondre \u00e0 la question de savoir si vous devez ou non utiliser Inertia, la r\u00e9ponse est oui, si vous voulez construire une application moderne \u00e0 page unique, c\u00f4t\u00e9 serveur et ax\u00e9e sur le r\u00e9f\u00e9rencement.<\/p>\n<p>Vous pouvez en savoir plus en visitant le <a href=\"https:\/\/inertiajs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">site officiel d&rsquo;Inertia.js<\/a> et en lisant la documentation.<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Les applications c\u00f4t\u00e9 client et les SPA sont de plus en plus populaires \u00e0 mesure que les technologies web \u00e9voluent, alors que les applications traditionnelles c\u00f4t\u00e9 serveur ont commenc\u00e9 \u00e0 tomber en d\u00e9su\u00e9tude. Plus que jamais, il est important d&rsquo;avoir les bons outils \u00e0 port\u00e9e de main.<\/p>\n<p>Inertia est une approche ou une solution moderne fantastique permettant aux d\u00e9veloppeurs c\u00f4t\u00e9 serveur de cr\u00e9er des applications \u00e0 page unique. Elle r\u00e9sout tellement de probl\u00e8mes et fait gagner tellement de temps.<\/p>\n<p>Comme nous l&rsquo;avons abord\u00e9 dans notre article, Inertia prend d\u00e9sormais en charge le rendu c\u00f4t\u00e9 serveur, ce qui l&rsquo;am\u00e8ne \u00e0 un tout autre niveau en permettant aux d\u00e9veloppeurs de cr\u00e9er des SPA ax\u00e9s sur le r\u00e9f\u00e9rencement.<\/p>\n<p>Inertia re\u00e7oit \u00e9galement beaucoup d&rsquo;amour de la part de la communaut\u00e9. L&rsquo;effort de d\u00e9veloppement est parrain\u00e9 par Laravel Forge, Laracasts, et un certain nombre d&rsquo;autres organisations de qualit\u00e9. Par cons\u00e9quent, Inertia est un outil fiable qui sera am\u00e9lior\u00e9 et maintenu \u00e0 l&rsquo;avenir pour les <a href=\"https:\/\/kinsta.com\/fr\/blog\/developpeur-laravel\/\">d\u00e9veloppeurs Laravel<\/a>, d&rsquo;autant plus que la <a href=\"https:\/\/kinsta.com\/fr\/blog\/salaire-developpeur-laravel\/\">demande de codeurs Laravel<\/a> continue de cro\u00eetre.<\/p>\n<p>Et si vous \u00eates \u00e0 la recherche de la prochaine maison pour votre projet aliment\u00e9 par Intertia, consultez les offres d&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications<\/a> de Kinsta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les applications monopages (Single-Page Applications ou SPA) sont devenues la mani\u00e8re moderne de cr\u00e9er des applications web, et Inertia.js est un outil de premier plan permettant &#8230;<\/p>\n","protected":false},"author":266,"featured_media":63005,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[886,535,518,341],"topic":[980],"class_list":["post-63004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-inertia-js","tag-javascript","tag-node-js","tag-web-development","topic-tutoriel-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>Le guide ultime d&#039;Inertia.js<\/title>\n<meta name=\"description\" content=\"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d&#039;applications mono-pages un jeu d&#039;enfant, tout en r\u00e9solvant d&#039;autres probl\u00e8mes pour les d\u00e9veloppeurs.\" \/>\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\/fr\/blog\/inertia-js\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Le guide ultime d&#039;Inertia.js\" \/>\n<meta property=\"og:description\" content=\"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d&#039;applications mono-pages un jeu d&#039;enfant, tout en r\u00e9solvant d&#039;autres probl\u00e8mes pour les d\u00e9veloppeurs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-07T11:03:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:44:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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=\"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d&#039;applications mono-pages un jeu d&#039;enfant, tout en r\u00e9solvant d&#039;autres probl\u00e8mes pour les d\u00e9veloppeurs.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"Le guide ultime d&rsquo;Inertia.js\",\"datePublished\":\"2022-11-07T11:03:47+00:00\",\"dateModified\":\"2025-10-01T19:44:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/\"},\"wordCount\":3214,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg\",\"keywords\":[\"inertia.js\",\"JavaScript\",\"node.js\",\"web development\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/\",\"name\":\"Le guide ultime d'Inertia.js\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg\",\"datePublished\":\"2022-11-07T11:03:47+00:00\",\"dateModified\":\"2025-10-01T19:44:34+00:00\",\"description\":\"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d'applications mono-pages un jeu d'enfant, tout en r\u00e9solvant d'autres probl\u00e8mes pour les d\u00e9veloppeurs.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutoriels JavaScript\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/tutoriel-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Le guide ultime d&rsquo;Inertia.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"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\/fr\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Le guide ultime d'Inertia.js","description":"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d'applications mono-pages un jeu d'enfant, tout en r\u00e9solvant d'autres probl\u00e8mes pour les d\u00e9veloppeurs.","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\/fr\/blog\/inertia-js\/","og_locale":"fr_FR","og_type":"article","og_title":"Le guide ultime d'Inertia.js","og_description":"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d'applications mono-pages un jeu d'enfant, tout en r\u00e9solvant d'autres probl\u00e8mes pour les d\u00e9veloppeurs.","og_url":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2022-11-07T11:03:47+00:00","article_modified_time":"2025-10-01T19:44:34+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg","type":"image\/jpeg"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d'applications mono-pages un jeu d'enfant, tout en r\u00e9solvant d'autres probl\u00e8mes pour les d\u00e9veloppeurs.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Mostafa Said","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"Le guide ultime d&rsquo;Inertia.js","datePublished":"2022-11-07T11:03:47+00:00","dateModified":"2025-10-01T19:44:34+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/"},"wordCount":3214,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg","keywords":["inertia.js","JavaScript","node.js","web development"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/","url":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/","name":"Le guide ultime d'Inertia.js","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg","datePublished":"2022-11-07T11:03:47+00:00","dateModified":"2025-10-01T19:44:34+00:00","description":"Un regard sur la fa\u00e7on dont Inertia.js fait de la construction d'applications mono-pages un jeu d'enfant, tout en r\u00e9solvant d'autres probl\u00e8mes pour les d\u00e9veloppeurs.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/inertia-js\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2022\/11\/inertia-js.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/inertia-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Tutoriels JavaScript","item":"https:\/\/kinsta.com\/fr\/sujets\/tutoriel-javascript\/"},{"@type":"ListItem","position":3,"name":"Le guide ultime d&rsquo;Inertia.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","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\/fr\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/63004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=63004"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/63004\/revisions"}],"predecessor-version":[{"id":68733,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/63004\/revisions\/68733"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/translations\/dk"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/63004\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/63005"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=63004"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=63004"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=63004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}