Geschrieben von Rahul Chhodde✏️
Moderne Frontend-Frameworks passen gut zu ihren dedizierten Full-Stack-Frameworks – wie React mit Next.js, Vue mit Nuxt.js und Svelte mit SvelteKit. Die gleiche Benutzerfreundlichkeit und sofort einsatzbereite Unterstützung scheint jedoch unmöglich zu sein, wenn eine moderne Frontend-Lösung wie React mit einem traditionellen Backend- oder serverseitigen Framework wie Laravel kombiniert wird.
Diese Anpassungslücke zwischen JavaScript-Frontend-Lösungen und traditionellen Backend-Frameworks wird durch Inertia.js geschlossen. In diesem Einführungsleitfaden erfahren Sie, wie Sie mit Inertia Single-Page-Apps (SPAs) mit einem traditionellen Backend-Framework und einem modernen JavaScript-Frontend erstellen und dabei das serverseitige Routing beibehalten.
Inertia.js ist ein Tool, das es Entwicklern ermöglicht, moderne SPAs mit beliebten Frontend- und Backend-Frameworks zu erstellen, ohne dazwischen eine API zu benötigen. Die Hauptidee von Inertia wurde 2019 von Jonathan Reinink gegründet und bestand darin, den Prozess der Erstellung moderner SPAs zu vereinfachen und gleichzeitig vorhandene serverseitige Frameworks zu nutzen.
Einfacher ausgedrückt fungiert Inertia als Klebstoff, der Ihre serverseitigen und clientseitigen Frameworks zusammenhält und eine effiziente Kommunikation zwischen dem Backend und dem Frontend gewährleistet. Mit Inertia entwickeln Sie die gesamte App wie einen Monolithen in einer einzigen Codebasis, anstatt zwei verschiedene Codebasen für das Frontend und Backend oder serverseitige Dinge zu verwalten.
Anfangs unterstützte Inertia nur Vue und Laravel. Mit seinen späteren Versionen wurde die Unterstützung für weitere Frameworks weiterentwickelt und erweitert.
Der moderne Inertia-Monolith bietet wichtige Funktionen wie serverseitiges Rendering (SSR), automatisierte Asset-Versionierung, Lazy Loading für Seitenkomponenten, TypeScript-Unterstützung und mehr. Wir werden die Framework-Unterstützung später untersuchen, während wir die Framework-Integration besprechen.
Inertia funktioniert wie ein Adapter zwischen Frontend und Backend. Es unterscheidet sich von regulären SPAs in folgenden Aspekten:
Wenn eine Anfrage vom Browser über eine Inertia-basierte App gestellt wird, erreicht sie zuerst das Backend. Als Ergebnis wird eine Inertia-Antwort erstellt, die zunächst ein vollständiges HTML-Dokument mit der Inertia-JavaScript-Bibliothek über den Inertia-Client an den Browser zurückgibt.
Für nachfolgende Navigationen stellt der Inertia-Client Abrufanfragen und erhält im Gegenzug JSON-Daten vom Server. Anhand dieser empfangenen Daten aktualisiert der Client dann das Frontend und Änderungen werden in der App widergespiegelt, ohne dass eine vollständige Seite neu geladen werden muss.
Hier ist ein Flussdiagramm, das den gesamten Prozess visuell erklärt:
Wenn Sie sich in einer Situation befinden, in der Sie ein traditionelles Backend-Framework für Ihr SPA verwenden müssen, aber die Freiheit haben, das Frontend nach Ihren Wünschen zu verwalten, sollten Sie die Verwendung von Inertia oder einem ähnlichen Tool in Betracht ziehen.
Inertia ist maßgeschneidert für Laravel und sorgt für mehr Stabilität in Laravel-Projekten. Wenn Sie ein Laravel-Entwickler sind und mehr tun möchten, als das Blade-Templating standardmäßig bietet, sollten Sie Inertia ausprobieren.
Möglicherweise erkunden Sie weitere Anwendungsfälle, bei denen Inertia Ihr Freund sein könnte. In den nächsten beiden Abschnitten werden einige Vor- und Nachteile der Verwendung von Inertia behandelt, die Ihnen dabei helfen werden, eine fundierte Entscheidung über die Auswahl von Inertia für Ihre App-Entwicklung zu treffen.
Es gibt einige bekannte Nachteile von SPAs im Allgemeinen, auf die wir hier nicht eingehen. Stattdessen werden wir auf die Nachteile von Inertia als Entwicklungsdienstprogramm eingehen.
Mit Inertia pflegen Sie das Frontend und Backend Ihrer App in einer einzigen Codebasis. Diese enge Kopplung macht Inertia ungeeignet für Projekte, die aus Gründen der besseren Wartbarkeit, Trennung von Anliegen, Skalierbarkeit, unabhängiger Entwicklung, Tech-Stack-Flexibilität und aus anderen Gründen eine getrennte Pflege von Frontend und Backend erfordern.
Die Verwendung eines Tools wie Inertia fügt Ihrem Stack einen weiteren Nutzen zum Erkunden und Lernen hinzu. Das Verstehen trägheitsspezifischer Muster und Konventionen erfordert einen moderaten Lernaufwand, der etwas nervig und zeitaufwändig sein kann.
Da die Anpassung an Tools wie Inertia für Frontend und Backend noch nicht zum Mainstream gehört, gibt es keine Standardmethoden, um Dinge damit zu tun. Daher würde die Abkehr von Inertia erhebliche Umgestaltungen erfordern, insbesondere im Frontend.
Außerdem wird die Testkomplexität, insbesondere bei API- und Unit-Tests, zwangsläufig zunehmen, da die Grenzen zwischen Frontend und Backend in einem Monolithen zusammenfallen.
Inertia hat über 6.000 Sterne auf GitHub und über 85 Mitwirkende. Sein Laravel-Adapter hat über 2.000 Sterne. Alle diese Statistiken zusammengenommen sind viel niedriger als bei Tools derselben Kategorie, die nicht so viele Funktionen und Framework-Unterstützung bieten wie Inertia.
Es kann also Situationen geben, in denen Sie etwas Bestimmtes damit aufbauen möchten und nicht genügend Referenzen und Anleitungen finden, denen Sie folgen können.
In der Tabelle unten finden Sie einen direkten Vergleich zwischen Inertia.js und einigen seiner Konkurrenten wie Livewire.
Mit Inertia kann es kompliziert sein, Ihre App zunächst offline zu schalten, da die Festlegung einer sinnvollen Caching-Strategie mit diesem Tool nicht einfach ist. Sie sollten auch bedenken, dass Inertia standardmäßig bei jeder Anfrage die vollständige Seitenkomponente sendet, wodurch sich die Nutzlastgröße erhöht, was durch teilweises Neuladen behoben werden kann.
Inertia hat einige allgemeine Vorteile gegenüber herkömmlichen, clientseitig gerenderten SPAs. Lassen Sie uns nacheinander einige seiner größten Stärken besprechen.
Inertia lässt sich einwandfrei in gängige Frontend- und Backend-Frameworks integrieren und bietet in seinen Demo-Builds Unterstützung aus erster Hand für Vue. Zu den unterstützten Frameworks und Bibliotheken, sowohl Frontend als auch Backend kombiniert, gehören Laravel, Rails, Phoenix, Django, React, Vue und Svelte.
Mit Laravel können Sie Ihre Assets mit Vite erstellen und erhalten so eine viel schnellere und produktivere Entwicklungserfahrung als der Webpack-basierte Laravel Mix. Die Vite-basierte Asset-Bündelung ist genau das Richtige für Sie, wenn Sie ein JavaScript-basiertes Frontend implementieren möchten.
Trotz der oben beschriebenen etwas schlechten Entwicklererfahrung bietet Inertia eine vereinfachte Integration, sodass keine separate API erforderlich ist, damit Frontend und Backend zusammenarbeiten. Mit Inertia können Sie Starterkits verwenden und manuelle Installationsanleitungen bereitstellen, um sowohl clientseitige als auch serverseitige Umgebungen für die Entwicklung einzurichten.
Anstatt vollständig vom Server gerendertes HTML mit einem riesigen JavaScript-Bundle an den Client zu senden, erhalten Inertia-Apps eine minimale HTML-Shell mit anfänglichen JSON-Daten, die auf dem Client vergleichsweise schneller gerendert wird.
Dadurch ist die anfängliche Leistung von Inertia-basierten Apps ohne zusätzliche Komplexität etwas besser als bei einem regulären, clientseitig gerenderten SPA. Es trägt auch zu einer insgesamt besseren UX-Qualität bei und verbessert den First Contentful Paint, eine wichtige Core Web Vital-Metrik.
Trägheitsbasierte Apps verwenden serverseitiges Routing, was zu übersichtlicheren, leicht crawlbaren URLs führt. Dies macht den Umgang mit Metadaten für jede Seite ziemlich einfach. Wie im letzten Punkt erläutert, weisen diese Apps aufgrund der geringen Menge an an den Client gesendeten Anfangsdaten wahrscheinlich auch bessere FCP-Werte auf.
Beide Funktionen zusammen führen zu einer besseren SEO und verschaffen Inertia.js-Apps einen Vorteil gegenüber herkömmlichen SPAs.
Tipp: Wenn sich clientseitiges Rendering (CSR) negativ auf die FCP-Metrik auswirkt, können Sie sich für eine vollständig servergerenderte App mit dem SSR-Plugin von Inertia.js entscheiden, um die Punktzahl zu verbessern.
Da Inertia.js als Adapter zwischen dem Frontend und dem Backend fungiert, ist es schön kompakt (wie es sein sollte) und wiegt nur etwa 15 KB, minimiert und komprimiert.
Mit der Trägheitsdokumentation können Sie sofort loslegen, insbesondere wenn Sie Laravel als Backend-Framework verwenden. Außerdem gibt es einen Upgrade-Leitfaden für ältere Versionen und deckt allgemeine bis fortgeschrittene Konzepte an einem Ort ab.
Lernen wir, wie man Inertia mit zwei der beliebtesten Frontend- und Backend-Lösungen einrichtet: einem Laravel-basierten Backend mit einem React-basierten Frontend. Möglicherweise finden Sie den gesamten in diesem Tutorial behandelten Code in diesem GitHub-Repository.
Beachten Sie, dass dieses Setup der Einfachheit halber nicht die Verwendung von TypeScript beinhaltet.
Angenommen, Sie haben Laravel auf Ihrem Computer installiert, erstellen wir ein neues Laravel-Projekt mit dem Laravel-Installationsbefehl:
laravel new
In Ihrem Entwicklerterminal sollte etwas wie das Folgende angezeigt werden:
Nachdem Sie diesen Befehl im Terminal ausgeführt und einen Namen für Ihr Projekt angegeben haben, werden Sie vom Installationsprogramm aufgefordert, ein Startkit und ein Testframework auszuwählen, ein Git-Repo zu initialisieren und die weitere Einrichtungslogistik zu durchlaufen.
Starter-Kits wie Breeze oder Jetstream bieten einige fertige Inertia.js-basierte Gerüste mit einer Demo-App, aber das wollen wir nicht. Stattdessen richten wir die Dinge von Grund auf neu ein.
Am Ende der Installationsschritte werden Sie aufgefordert, eine Datenbank auszuwählen. Ich habe pgsql gewählt, da ich PostgreSQL verwende, um diesen Artikel zu erklären. Wählen Sie Ihre entsprechend Ihrer Datenbankpräferenz aus.
Als nächstes sollten wir die Inertia.js-Integration für Laravel installieren, indem wir den folgenden Composer-Befehl im Terminal ausführen:
composer require inertiajs/inertia-laravel
Der obige Befehl installiert den Laravel-Adapter für Inertia und seine Abhängigkeiten. Es wird auch den Grundstein für die Zusammenarbeit von Laravel und Inertia legen.
Danach fügen wir die Inertia-Middleware hinzu, um Inertia-Anfragen in Laravel zu verarbeiten. Verwenden Sie dazu den folgenden Handwerkerbefehl:
laravel new
Anstelle der Standard-Blade-Vorlagen von Laravel verwenden wir React, um unsere Seiten und Komponenten zu verwalten. Gehen wir in unseren Projektordner und installieren React und React DOM mit dem folgenden Befehl. Verwenden Sie dazu den Node-Paketmanager Ihrer Wahl:
composer require inertiajs/inertia-laravel
Lassen Sie uns auch das React-Plugin von Vite als Entwicklungsabhängigkeit installieren, da wir Vite während des gesamten Projekts als unseren Asset-Manager verwenden werden:
php artisan inertia:middleware
Fügen Sie abschließend die Inertia-Unterstützung für React mit dem folgenden Befehl hinzu:
pnpm add react react-dom
Ich verwende bei diesem Setup auch Tailwind CSS, was völlig optional ist. Wenn Sie auch Tailwind CSS installieren möchten, sind die gleichen Schritte erforderlich wie bei der Installation von Tailwind CSS mit einer React- oder Vue-App.
Suchen Sie zunächst die Datei app.js im Verzeichnis resources/js, benennen Sie sie in app.jsx um und ersetzen Sie ihren Inhalt durch Folgendes:
pnpm add --save-dev @vitejs/plugin-react
Die oben genannten Änderungen helfen Inertia dabei, unsere Seiten zu identifizieren und sie mit den richtigen Routen zu verknüpfen.
Als nächstes benennen wir die Datei „welcome.blade.php“ im Verzeichnis resources/view in „app.blade.php“ um und ersetzen ihren Inhalt durch Folgendes:
pnpm add @inertiajs/react
Beachten Sie, dass diese Datei innerhalb der grundlegenden HTML-Struktur einer Webseite einige Inertia- und Vite-Anweisungen enthält, die zum Einfügen bestimmter Skripts zum Ausführen von Neuladevorgängen, zum Hinzufügen von Skripts usw. erforderlich sind.
Fügen Sie als Nächstes die erforderliche Middleware in der Datei „bootstrap/app.php“ hinzu, um Inertia-spezifische Anforderungen zu verarbeiten:
import { createInertiaApp } from "@inertiajs/react"; import { createRoot } from "react-dom/client"; import "../css/app.css"; createInertiaApp({ resolve: (name) => { const pages = import.meta.glob("./Pages/**/*.jsx", { eager: true }); return pages[`./Pages/${name}.jsx`]; }, setup({ el, App, props }) { createRoot(el).render(<App {...props} />); }, });
Lassen Sie uns auch das React-Plugin so konfigurieren, dass es mit Vite funktioniert, um die Vorteile zu nutzen, die es bietet:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> @viteReactRefresh @vite('resources/js/app.jsx') @inertiaHead </head> <body> @inertia <div id="app"></div> </body> </html>
Lassen Sie uns abschließend Laravel und React mit den folgenden Befehlen ausführen:
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; use App\Http\Middleware\HandleInertiaRequests; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { $middleware->web(append: [ HandleInertiaRequests::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { // })->create();
Wir können ein Shell-Skript schreiben, um diese Befehle zusammen in einem einzigen Terminalfenster auszuführen. Um die Sache jedoch einfach und unkompliziert zu halten, führen wir sie zunächst in zwei separaten Terminals aus.
Nachdem diese Befehle erfolgreich ausgeführt wurden, können Sie die beiden lokalen URLs sehen. Führen Sie die Laravel-App aus, um zu sehen, wie Ihre Laravel-App aussieht. Und damit haben Sie erfolgreich eine Basis-App mit Inertia eingerichtet!
Mit Ihrer Inertia-App können Sie viel tun. Werfen wir einen Blick auf einige der herausragenden Funktionen, die Sie kennen sollten.
Um verschiedene Layouts und Seiten besser zu organisieren, erstellen Sie zwei Unterverzeichnisse im Verzeichnis resources/js. Außerdem können Sie hier Ihre Komponenten in einem separaten Verzeichnis verwalten und nach Belieben in Ihren Seiten verwenden.
Hier ist ein kurzes Beispiel unseres Hauptlayouts:
import { defineConfig } from "vite"; import laravel from "laravel-vite-plugin"; import react from "@vitejs/plugin-react"; export default defineConfig({ plugins: [ laravel({ input: "resources/js/app.jsx", refresh: true, }), react(), ], resolve: { alias: { "@": "/resources/js", }, }, });
Dies ist im Grunde eine Komponente, die als Basislayout dient und daher in einem speziellen Layouts-Ordner abgelegt wird. Das MainLayout kann nun als Komponente auf unseren Seiten verwendet werden, wie im folgenden Code gezeigt:
laravel new
Hier ist ein Einblick, wie MainLayout.jsx und About.jsx zusammen eine Arbeitsseite mit Stilen bilden können, die von Tailwind CSS bereitgestellt werden:
Mit dem traditionellen Laravel-Routing ist es einfach, neue Routen zu erstellen und die Seiten einzubinden, die wir im letzten Abschnitt kennengelernt haben. Auch wenn es nicht dateibasiert ist, ist das Routing recht einfach zu verwalten. Wenn Sie mit JavaScript-basierten Backend-Frameworks wie Express und Fastify gearbeitet haben, sind Sie bereits mit der Funktionsweise des Routings in Laravel vertraut.
Navigieren Sie zur Datei „routes/web.php“, fügen Sie neue Routen hinzu und rendern Sie die entsprechende Seite mit der Rendermethode von Inertia, wie im folgenden Code gezeigt:
composer require inertiajs/inertia-laravel
Dynamische Verknüpfung in Inertia ähnelt React und Next und kann mit der Link-Komponente von Inertia durchgeführt werden, wie unten gezeigt:
php artisan inertia:middleware
Die folgende Bildschirmaufnahme zeigt das SPA-ähnliche dynamische Verhalten der Navigation, die wir gerade in den obigen Codeblöcken erstellt haben:
Inertia bietet einen useForm-Hook für die Arbeit mit GET- und POST-Anfragen zur Bearbeitung des Status und Formularübermittlungen. Es bietet auch den usePage-Hook, der Ihnen den Zugriff auf gemeinsam genutzte Daten ermöglicht, die vom Server an den Client übergeben werden, z. B. eine Erfolgs- oder Fehlermeldung.
Hier ist ein einfaches Beispiel, das GET- und POST-Anfragen zum Laden und Senden von Benutzerdaten durchführt. Beachten Sie, dass die GET-Anfrage implizit von Inertia verarbeitet wird, während wir POST-Anfragen mit der Post-Methode aus dem useForm-Hook stellen, um Daten an den Server zu senden:
pnpm add react react-dom
Mit diesem Ansatz können wir eine Seite zusammenstellen, um eine Liste der Daten aus der Datenbank abzurufen, sie in einer HTML-Tabelle anzuzeigen und außerdem weitere dieser Daten mithilfe eines Formulars wie unten gezeigt zur Datenbank hinzuzufügen:
Inertia.js bietet NProgress-basierte Fortschrittsanzeige. Sie können dies beim Einrichten der App.jsx-Datei aktivieren und dort Konfigurationseinstellungen für die Fortschrittsanzeige vornehmen:
pnpm add --save-dev @vitejs/plugin-react
Wenn Sie nicht wissen, wie NProgress-Ladeanimationen aussehen, finden Sie hier einen kleinen Einblick:
Wenn Sie regelmäßig mit Laravel arbeiten, wird es nicht viel kosten, eine Datenbank in Ihr Inertia-Setup zu integrieren und zu nutzen. Fügen Sie einfach die erforderlichen Datenbankanmeldeinformationen in die .env-Datei ein, stellen Sie sicher, dass Sie den richtigen Datenbanktreiber verwenden, überprüfen Sie die Datei config/database.php und schon kann es losgehen.
Bei einer vorhandenen Datenbank können Sie das Migrationssystem von Laravel verwenden, um das erforderliche Datenbankschema zu definieren. Ich hatte keine Datenbank, also habe ich eine erstellt und sie mithilfe des Laravel-Seeder-Mechanismus mit einigen gefälschten Benutzerdaten gefüllt, um sie im Frontend anzuzeigen. Hier sind einige Schritte, die ich danach befolgt habe:
Für jemanden, der neu im Laravel-Ökosystem ist oder nicht oft mit Laravel-Datenbanken arbeitet, kann dies bei der Migration und Befüllung der Datenbank etwas länger dauern. In solchen Fällen kann das Löschen des Konfigurationscache sehr hilfreich sein, um Fehler zu beseitigen, die durch die zwischengespeicherten Konfigurationsoptionen verursacht werden.
Die möglichen Anwendungen für Inertia sind vielfältig. Die Kombination von Laravel mit einem modernen JavaScript-Frontend mithilfe von Inertia vereinfacht die Full-Stack-Entwicklung für monolithische Apps mit robusten Backend-Funktionen.
Obwohl es nicht für jedes Team oder jede Situation geeignet ist, finden Sie hier einige Anwendungsfälle, in denen Inertia möglicherweise eine gute Option ist:
Inertia ist nicht die einzige Lösung zur Überbrückung serverseitiger und clientseitiger Frameworks und Bibliotheken. Livewire und Hybridly sind zwei weitere beliebte Tools mit jeweils eigenen Vor- und Nachteilen. Wenn Sie Ihre Optionen vergleichen, sollten Sie Folgendes berücksichtigen:
Diese Tabelle bietet einen hilfreichen Überblick über den Vergleich dieser drei, um Sie bei Ihrer Entscheidung weiter zu unterstützen:
Feature | Inertia.js | Livewire | Hybridly |
---|---|---|---|
Server-side framework | Laravel, Rails | Laravel only | Laravel only |
Client-side framework | Vue.js, React, Svelte | None (PHP-based) | Vue.js |
SPA-like experience | Yes | Yes | Yes |
Server-side rendering (SSR) | Optional | Yes | Yes |
Real-time updates | No (needs additional setup) | Yes | Yes |
Full-page reloads | No | No | No |
Learning curve | Moderate | Low | Moderate |
Component-based architecture | Yes | Yes | Yes |
State management | Client-side | Server-side | Both |
SEO-friendly | Good | Excellent | Excellent |
Backend-driven UI | Partial | Full | Full |
Progressive enhancement | Limited | Yes | Yes |
File uploads | Supported | Native support | Supported |
Pagination | Supported | Native support | Supported |
Form handling | Client-side | Server-side | Both |
Authentication | Supported | Native support | Supported |
Authorization | Supported | Native support | Supported |
Testing | Both client & server | Server | Both client and server |
Ecosystem/Community | Small | Large | Small (newer) |
Performance | Very good | Good | Very good |
Bundle size | Larger (due to JS framework) | Smaller | Moderate |
Offline support | Possible | Limited | Possible |
Mobile app development | Possible | Not ideal | Possible |
In diesem Einführungsleitfaden haben wir erfahren, was Inertia.js ist und wie es zum Erstellen einer Hybridanwendung unter Verwendung eines traditionellen Backend-Frameworks wie Laravel und einer modernen Frontend-Bibliothek wie React verwendet wird.
Wir haben die Vor- und Nachteile der Verwendung von Inertia, einige seiner praktischen Anwendungen und ein Beispiel für die Einrichtung mit Laravel kennengelernt. Wenn Sie bei der Befolgung der Anleitung einmal nicht weiterkommen, ziehen Sie in Betracht, dieses GitHub-Repository für das von uns behandelte Projekt zu klonen, oder schreiben Sie einen Kommentar und ich helfe Ihnen gerne weiter.
Es besteht kein Zweifel, dass Frontends immer komplexer werden. Wenn Sie Ihrer App neue JavaScript-Bibliotheken und andere Abhängigkeiten hinzufügen, benötigen Sie mehr Transparenz, um sicherzustellen, dass Ihre Benutzer nicht auf unbekannte Probleme stoßen.
LogRocket ist eine Frontend-Anwendungsüberwachungslösung, mit der Sie JavaScript-Fehler so wiedergeben können, als ob sie in Ihrem eigenen Browser aufgetreten wären, sodass Sie effektiver auf Fehler reagieren können.
LogRocket funktioniert perfekt mit jeder App, unabhängig vom Framework, und verfügt über Plugins, um zusätzlichen Kontext von Redux, Vuex und @ngrx/store zu protokollieren. Anstatt zu raten, warum Probleme auftreten, können Sie den Status Ihrer Anwendung zum Zeitpunkt des Problems zusammenfassen und darüber berichten. LogRocket überwacht auch die Leistung Ihrer App und meldet Metriken wie Client-CPU-Auslastung, Client-Speichernutzung und mehr.
Bauen Sie sicher – beginnen Sie mit der kostenlosen Überwachung.
Das obige ist der detaillierte Inhalt vonEinführungsleitfaden für Inertia.js: Übersicht, Beispiele und Alternativen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!