Skip to content

🧭 01. Introducción a Ziggy.js

Ziggy es una biblioteca de JavaScript que permite utilizar las rutas con nombre de Laravel directamente en tu código JavaScript o Vue. Desarrollada por Tighten, Ziggy resuelve uno de los problemas más comunes en el desarrollo web moderno: mantener sincronizadas las rutas entre el backend (Laravel) y el frontend (JavaScript).

En esencia, Ziggy hace tres cosas fundamentales:

  1. Exporta tus rutas de Laravel a JavaScript: Toma todas las rutas definidas en tu aplicación Laravel y las hace disponibles en el frontend.

  2. Proporciona una función route(): Similar a la función helper route() de Laravel en PHP, pero disponible en JavaScript.

  3. Mantiene la consistencia: Asegura que los cambios en las rutas del backend se reflejen automáticamente en el frontend.

Comparación de uso entre PHP y JavaScript
// En PHP (Laravel)
$url = route('users.show', ['user' => 1]);
// En JavaScript (con Ziggy)
const url = route('users.show', { user: 1 });

Utilizar Ziggy en proyectos que combinan Laravel con Vue ofrece numerosas ventajas:

  • Fuente única de verdad: Las rutas se definen una sola vez en Laravel y se utilizan en toda la aplicación.
  • Actualizaciones automáticas: Cambiar una ruta en Laravel actualiza automáticamente todas las referencias en JavaScript.
  • Autocompletado: Los editores modernos pueden proporcionar sugerencias de nombres de rutas.
  • Menos código repetitivo: No es necesario duplicar la lógica de generación de URLs.
  • Menos errores: Reduce los errores tipográficos en URLs hardcodeadas.
  • Componentes Vue: Fácil integración con componentes de Vue para navegación.
  • Composition API: Funciona perfectamente con la nueva Composition API de Vue 3.
  • Reactividad: Las rutas pueden ser parte del sistema reactivo de Vue.
Ejemplo de uso con Vue 3 Composition API
<script setup>
import { ref } from 'vue';
import route from 'ziggy-js';
const userId = ref(1);
const profileUrl = computed(() => route('users.profile', { id: userId.value }));
</script>
<template>
<a :href="profileUrl">Ver perfil</a>
</template>
  • Validación de parámetros: Ziggy valida los parámetros requeridos para cada ruta.
  • Protección contra CSRF: Se integra con la protección CSRF de Laravel.

URLs hardcodeadas:

// URLs hardcodeadas
axios.get('/api/users/1');
// Si la ruta cambia a '/api/v2/users/1', hay que actualizar cada referencia

Con Ziggy:

// Con Ziggy
axios.get(route('api.users.show', { user: 1 }));
// Si la ruta cambia, no hay que modificar el código JavaScript

Ventajas de Ziggy:

  • No hay que actualizar manualmente las URLs en el frontend cuando cambian en el backend
  • Menos propenso a errores tipográficos
  • Más legible y mantenible
🐝