>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Beveiliging
PHP

Laravel Wayfinder: Wanneer Backend en Frontend Dezelfde Taal Spreken

1.752 sterren

Laravel Wayfinder Logo

Herken je dit? Je schrijft vrolijk frontend in TypeScript, maar ergens in de diepten van je Laravel backend verandert een route-URL of een set parameters. En dan, na uren debuggen, kom je erachter dat je frontend requests verstuurt naar nergens of met incorrecte data. Het doet pijn, het is frustrerend, het is vervelend. Wat als je TypeScript frontend altijd wist welke routes en methoden beschikbaar waren op de backend, compleet met volledige type-veiligheid?

Dit is precies het probleem dat Laravel Wayfinder oplost – een verse maar nu al veelbelovende tool van het Laravel team. Het is niet zomaar een utility, maar een echte brug die je Laravel backend en TypeScript frontend verbindt, waardoor ze een enkele, harmonieus werkende geheel vormen. Vergeet handmatige synchronisatie, hardcoded URL's en hoofdpijn van gewijzigde parameters. Wayfinder doet dit automatisch voor je.

Wat is Laravel Wayfinder en Waarom Heb Je Het Nodig?

In essentie is Laravel Wayfinder een tool die je Laravel controllers en routes analyseert, en op basis van deze informatie volledig getypte TypeScript-functies genereert. Deze functies kunnen worden geïmporteerd en gebruikt in je client code zoals elke andere TypeScript-functie. Dit betekent dat je backend endpoints direct kunt aanroepen vanuit de frontend zonder je zorgen te maken over de correctheid van de URL, HTTP-methode of set parameters.

Wie heeft hier baat bij? Elke developer die moderne single-page applications (SPA's) of hybride projecten bouwt waarbij Laravel als API dient en de frontend is geschreven in React, Vue, Angular of Svelte met TypeScript. Als je waarde hecht aan type-veiligheid, ontwikkelsnelheid en fouten wilt minimaliseren gerelateerd aan frontend-backend interactie, dan is Wayfinder jouw keuze.

Belangrijkste Functies: Hoe Wayfinder Het Spel Verandert

Laten we eens kijken wat Wayfinder zo'n handige en krachtige tool maakt.

1. Automatische Generatie van Type-Veilige Functies

Dit is het hart van Wayfinder. In plaats van handmatig interfaces of types te schrijven voor elk endpoint, doet Wayfinder dit voor je. Het analyseert je controllers en routes, en creëert vervolgens corresponderende TypeScript-bestanden. Als je bijvoorbeeld een controller PostController hebt met een methode show(Post $post), zal Wayfinder een functie genereren die een post ID verwacht en een object retourneert met URL en methode.

import { show } from "@/actions/App/Http/Controllers/PostController";

show(1); // { url: "/posts/1", method: "get" }

Of, als je alleen de URL nodig hebt:

import { show } from "@/actions/App/Http/Controllers/PostController";

show.url(1); // "/posts/1"

2. Flexibele Route Parameter Verwerking

Wayfinder kan verschillende vormen van parameter-doorvoer aan, wat het zeer handig maakt. Je kunt ze doorgeven als aparte argumenten, objecten, of zelfs geneste objecten als de route model binding gebruikt per sleutel (bijvoorbeeld {post:slug}).

import { show, update } from "@/actions/App/Http/Controllers/PostController";

// Одиночный параметр
show(1);
show({ id: 1 });

// Несколько параметров
update([1, 2]);
update({ post: 1, author: 2 });
update({ post: { id: 1 }, author: { id: 2 } });

// Если роут /posts/{post:slug}
show("my-new-post");
show({ slug: "my-new-post" });

Dit stelt je in staat om schonere en intuïtievere frontend code te schrijven zonder na te denken over hoe Laravel parameters verwacht op de backend.

3. Ondersteuning voor Named Routes en Invokable Controllers

Wayfinder beperkt zich niet alleen tot controller methoden. Het kan ook functies genereren voor named routes, wat zeer handig is als je actief de route() helper gebruikt in Laravel.

import { show } from "@/routes/post";

// Если именованный роут `post.show`
show(1); // { url: "/posts/1", method: "get" }

En als je invokable controllers hebt (die de __invoke methode gebruiken), ondersteunt Wayfinder ze ook:

import StorePostController from "@/actions/App/Http/Controllers/StorePostController";

StorePostController();

4. Vereenvoudigde HTML Formulieren

Zelfs als je traditionele HTML-formulieren gebruikt, kan Wayfinder hun creatie aanzienlijk vereenvoudigen. Door de --with-form optie te activeren tijdens generatie, krijg je een speciale variant van .form() die automatisch action en method attributen genereert voor je <form> tag.

import { store, update } from "@/actions/App/Http/Controllers/PostController";

const Page = () => (
    <form {...store.form()}>
        {/* <form action="/posts" method="post"> */}
        {/* ... */}
    </form>
);

const Page = () => (
    <form {...update.form(1)}>
        {/* <form action="/posts/1?_method=PATCH" method="post"> */}
        {/* ... */}
    </form>
);

Dit elimineert de noodzaak om handmatig URL's en verborgen velden te vormen voor HTTP-methoden anders dan GET en POST.

5. Query Parameter Beheer

Moet je query parameters aan een URL toevoegen? Wayfinder biedt een handige options object met een query of mergeQuery veld.

import { show } from "@/actions/App/Http/Controllers/PostController";

const options = {
    query: {
        page: 1,
        sort_by: "name",
    },
};

show(1, options); // { url: "/posts/1?page=1&sort_by=name", method: "get" }

En mergeQuery stelt je in staat om parameters samen te voegen met die al in de URL aanwezig zijn, wat zeer handig is voor paginatie of filtering.

6. Naadloze Integratie met Inertia.js

Voor degenen die met Inertia.js werken, is Wayfinder een echte vondst. De resultaten van Wayfinder-functies kunnen direct worden doorgegeven aan useForm().submit() of aan href van het Link component.

import { useForm } from "@inertiajs/react";
import { store } from "@/actions/App/Http/Controllers/PostController";

const form = useForm({
    name: "My Big Post",
});

form.submit(store()); // Отправит POST запрос на `/posts`
import { Link } from "@inertiajs/react";
import { show } from "@/actions/App/Http/Controllers/PostController";

const Nav = () => <Link href={show(1)}>Показать первый пост</Link>;

Dit maximaliseert de vereenvoudiging van backend interactie in Inertia-applicaties, waardoor de code schoner en betrouwbaarder wordt.

Hoe Het Werkt Onder de Motorkap

Laravel Wayfinder bestaat uit twee hoofdcomponenten:

  1. Composer package voor Laravel: Het bevat de logica voor het analyseren van je routes en controllers, evenals het php artisan wayfinder:generate commando dat het hoofdwerk uitvoert van het genereren van TypeScript-bestanden. Deze bestanden worden standaard opgeslagen in resources/js/wayfinder, resources/js/actions en resources/js/routes.
  2. Vite plugin @laravel/vite-plugin-wayfinder: Deze plugin zorgt ervoor dat je routes automatisch worden geregenereerd tijdens de Vite build en wanneer bestanden veranderen tijdens dev server operatie. Dit is cruciaal belangrijk om types up-to-date te houden.

De gegenereerde bestanden kunnen veilig worden toegevoegd aan .gitignore, aangezien ze volledig opnieuw worden gecreëerd bij elke build of wanneer het generatie commando wordt uitgevoerd.

Praktische Toepassing: Minder Fouten, Meer Snelheid

In mijn praktijk kom ik vaak tegen dat frontend-backend integratie een bron is van veel fouten. Verkeerd geschreven URL, vergeten parameter, gewijzigde route naam die niet werd gesynchroniseerd op de frontend... Wayfinder lost deze problemen bij de wortel aan. Het brengt vertrouwen en voorspelbaarheid in het ontwikkelproces:

  • Verminderd aantal fouten: Dankzij type-veiligheid worden de meeste endpoint problemen opgemerkt tijdens de TypeScript compilatie fase, niet tijdens runtime.
  • Snellere ontwikkeling: Je hoeft niet meer constant te schakelen tussen backend en frontend om route namen of parameters te controleren. Alles is beschikbaar right in je IDE met autocompletion.
  • Verbeterde code onderhoudbaarheid: Code wordt leesbaarder en begrijpelijker, omdat je kunt zien welke data wordt verwacht voor elke API-aanroep.
  • Makkelijkere onboarding: Nieuwe teamleden zullen het veel gemakkelijker vinden om te begrijpen hoe ze met de API moeten interageren, dankzij duidelijk gedefinieerde types.

Conclusie: Is Het De Moeite Waard Om Te Proberen?

Absoluut! Laravel Wayfinder is een frisse wind voor iedereen die applicaties bouwt met Laravel en TypeScript. Het vereenvoudigt en verbetert het interactieproces tussen de twee delen van je applicatie aanzienlijk. Hoewel het project in Beta stadium verkeert en de API kan veranderen (zoals de developers zelf waarschuwen), is het potentieel overduidelijk. Gegeven dat dit een officieel pakket is van het Laravel team, kunnen we actieve ontwikkeling en stabiliteit in de toekomst verwachten.

Voor wie is het bijzonder geschikt?

  • Developers die Laravel en TypeScript gebruiken (voor de hand liggend).
  • Degenen die met Vite werken voor frontend builds.
  • Projecten die actief Inertia.js gebruiken, waar Wayfinder echt uitblinkt.
  • Teams die streven naar hogere code kwaliteit en minder bugs.

Ik raad je ten zeerste aan om Laravel Wayfinder te proberen in je volgende of huidige project. Het kan datgene worden wat je ontwikkeling leuker, efficiënter en, het belangrijkste, minder foutgevoelig maakt. Laat je backend en frontend eindelijk dezelfde, universeel begrepen taal spreken!

Gerelateerde projecten