Ziggy: A Package for Named Laravel Routes in JavaScript

Ziggy: A Package for Named Laravel Routes in JavaScript

Ziggy is a package that exposes named Laravel routes in JavaScript. When you update named routes in Laravel, the front end will automatically stay in sync.

What I like about this package is that all you have to do (after installing the package) is use the provided @routes blade directive in your layout:

<!DOCTYPE html>
<html lang="en">
  <!-- ... -->
    <script src="{{ mix('js/app.js') }}"></script>

The @routes directive defines named routes in a JavaScript variable and provides you with a route() JavaScript helper similar to Laravel’s PHP route helper:

var routeUrl = route('posts.index');
var routeUrl = route('posts.show', {post: 1337});

// Returns results from /posts
return axios.get(route('posts.index'))
    .then((response) => {
        return response.data;

Updating named Laravel routes on the backend will automatically keep your front end requests in sync.

Ziggy was written by Daniel Coulbourne from Tighten Co, a Laravel partner. Daniel Coulbourne explains the background story about why he wrote Ziggy:

My JavaScript is full of axios calls, which are made to hard-coded API endpoint URLs in my Laravel apps. This can be a real pain when an endpoint route needs to be moved to a group with a URL prefix, when a parameter needs to be added, or when any other URL-breaking change needs to be made.

This is why, in Laravel, we have named routes, and why we don’t hard-code URLs in our Blade templates. By abstracting away the need for our consuming code to know the exact (down-to-the-letter) URL for a route, we are able to write more change-resilient code—and avoid a lot of “find and replace.”

We wanted the same kind of protection and convenience in JavaScript that we have inside our Laravel apps. And that’s why we built Ziggy.

Read Daniel’s full post introducing Ziggy; he also mentions other packages similar to Ziggy and some inspirational ideas around the concept. You can find Ziggy’s source code on GitHub.

Filed in: Laravel Packages / Routing


Join the weekly newsletter and never miss out on new tips, tutorials, and more.

Laravel News Partners

Laravel Jobs

Web Application Developer
Cleveland, OH
PS Lifestyle
Full-Stack Developer
Tampa, FL / Remote
Nu Image Medical
PHP Developer
Full-Stack Developer
Sioux Falls, SD or Remote
Electric Pulp
Senior PHP / Vue.js Developer
Portland, OR / Remote
Bright Oak
Full Stack Vue.js Developer (Front-end focus)
Senior Laravel Web Application Developer
NYC or Remote
Happy Cog