Heim  >  Artikel  >  Web-Frontend  >  Einführungsleitfaden für Inertia.js: Übersicht, Beispiele und Alternativen

Einführungsleitfaden für Inertia.js: Übersicht, Beispiele und Alternativen

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 05:34:02510Durchsuche

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.

Was ist Inertia.js?

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.

Wie hat sich Inertia.js im Laufe der Zeit verändert?

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.

So funktioniert Inertia.js

Inertia funktioniert wie ein Adapter zwischen Frontend und Backend. Es unterscheidet sich von regulären SPAs in folgenden Aspekten:

  • Behält serverseitiges Routing bei und bietet gleichzeitig ein SPA-ähnliches Erlebnis
  • Ersetzt das Neuladen ganzer Seiten durch kleine Abrufanfragen
  • Erhält JSON-Daten im Gegenzug vom Server
  • Benötigt weniger JavaScript für die Flüssigkeitszufuhr

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:
Inertia.js adoption guide: Overview, examples, and alternatives

Weiterführende Literatur:

  • Einführung in Inertia.js

Warum Inertia.js wählen?

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.

Nachteile von Inertia.js

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.

Weniger flexibel

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.

Entwicklererfahrung

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.

Kleine Gemeinschaft

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.

Weiterführende Literatur:

  • Livewire vs. Inertia.js: Vergleich von Laravel-Frontends

Technische Überlegungen

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.

Vorteile von Inertia.js

Inertia hat einige allgemeine Vorteile gegenüber herkömmlichen, clientseitig gerenderten SPAs. Lassen Sie uns nacheinander einige seiner größten Stärken besprechen.

Nahtlose Integration

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.

Weiterführende Literatur:

  • Erste Schritte mit Inertia.js, Vue.js und AdonisJs
  • Erstellen einer Single-Page-App mit Laravel und Vue

Vereinfachte Entwicklung

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.

Leistung

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.

Weiterführende Literatur:

  • Core Web Vitals Best Practices für SPAs

SEO-freundlich

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.

Bündelgröße

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.

Dokumentation

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.

Erste Schritte mit Inertia.js

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.

Serverseitige Installation

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:
Inertia.js adoption guide: Overview, examples, and alternatives
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.

Weiterführende Literatur:

  • Laravel Breezes Inertia-React-Stack vs. Next.js und Gatsby
  • Laravel vs. AdonisJs: Welches sollten Sie verwenden?

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

Clientseitige Installation

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.

Konfiguration

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!

Hauptmerkmale von Inertia.js

Mit Ihrer Inertia-App können Sie viel tun. Werfen wir einen Blick auf einige der herausragenden Funktionen, die Sie kennen sollten.

Seiten und Layouts

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:
Inertia.js adoption guide: Overview, examples, and alternatives

Links und Routing

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.js adoption guide: Overview, examples, and alternatives

HTTP-Anfragen (GET/POST/Nicht-GET-Anfragen)

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 adoption guide: Overview, examples, and alternatives

Fortschrittsindikatoren

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:
Inertia.js adoption guide: Overview, examples, and alternatives

Datenbankintegrationen

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:

  • Habe ein Modell für meine Benutzerdaten im App-Verzeichnis erstellt und außerdem einen HTTP-Controller erstellt, um Datenbankanfragen bezüglich dieser Daten zu verarbeiten
  • Erstellte eine Benutzerseite im Verzeichnis resources/js/Pages und versah sie mit einer Requisite, die ein Benutzerarray akzeptiert. Dieses Benutzerarray erhält die erforderlichen Daten durch eine GET-Anfrage, die intrinsisch mit Inertia erfolgt. Wir können auch POST-Anfragen stellen, um die Daten zur Datenbank hinzuzufügen
  • Eine Benutzerroute in der Datei „routes/web.php“ definiert und unseren HTTP-Controller damit verknüpft

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.

Anwendungsfälle von Inertia.js

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:

  • Apps, die sich bei der Vorlagenerstellung nicht auf Blade verlassen möchten und robuste Lösungen für die Handhabung clientseitiger Funktionen wünschen
  • Alte Apps, die Laravel als Backend verwenden, aber die Vorteile moderner Bibliotheken nutzen möchten, die hauptsächlich für JavaScript-basierte Frontend-Frameworks erstellt und gepflegt werden
  • Moderne Apps, die planen, auf ein Laravel-basiertes Backend umzusteigen, um die Vorteile der traditionellen Servertechnologie anstelle der serverlosen Technologie zu nutzen
  • SPAs, die eine bessere Sichtbarkeit in Suchmaschinen und auch die Leistungsvorteile von SSR wünschen
  • Für diejenigen, die sowohl PHP als auch JavaScript lieben und damit arbeiten möchten

Inertia.js vs. Livewire vs. Hybridly

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:

  • Community – Inertia.js hat im Vergleich zu Livewire eine vergleichsweise kleinere Community, aber eine bessere als Hybridly.
  • Funktionen – Livewire und Hybridly bieten keine Unterstützung für die Implementierung von Frontend-Frameworks, während Inertia.js für seine Unterstützung für wichtige JavaScript-basierte Frontend-Lösungen bekannt ist.
  • Leistung – Dies hängt hauptsächlich von der Implementierung ab, aber Inertia.js-basierte SPAs können eine bessere wahrgenommene Leistung bieten, während die vom Server gerenderten Apps, die Livewire und Hybridly verwenden, besser sein können, da die meisten Seiten vom Server gerendert werden .
  • Dokumentation – Livewire und Inertia.js verfügen im Vergleich zu Hybridly über eine gute Dokumentation, die relativ neu ist und Raum für weitere Verbesserungen bietet.

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

Abschluss

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.


Fügen Sie neue JS-Bibliotheken hinzu, um neue Funktionen zu entwickeln oder die Leistung zu verbessern? Was ist, wenn sie das Gegenteil tun?

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.

Inertia.js adoption guide: Overview, examples, and alternatives

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn