🧭 01. Introducción a Ziggy.js
¿Qué es Ziggy y para qué sirve?
Section titled “¿Qué es Ziggy y para qué sirve?”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:
-
Exporta tus rutas de Laravel a JavaScript: Toma todas las rutas definidas en tu aplicación Laravel y las hace disponibles en el frontend.
-
Proporciona una función
route(): Similar a la función helperroute()de Laravel en PHP, pero disponible en JavaScript. -
Mantiene la consistencia: Asegura que los cambios en las rutas del backend se reflejen automáticamente en el frontend.
// En PHP (Laravel)$url = route('users.show', ['user' => 1]);
// En JavaScript (con Ziggy)const url = route('users.show', { user: 1 });Ventajas de usar Ziggy con Laravel y Vue
Section titled “Ventajas de usar Ziggy con Laravel y Vue”Utilizar Ziggy en proyectos que combinan Laravel con Vue ofrece numerosas ventajas:
1. Mantenimiento simplificado
Section titled “1. Mantenimiento simplificado”- 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.
2. Mejora en la productividad
Section titled “2. Mejora en la productividad”- 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.
3. Integración perfecta con Vue
Section titled “3. Integración perfecta con Vue”- 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.
<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>4. Seguridad mejorada
Section titled “4. Seguridad mejorada”- 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.
Comparación con otras soluciones
Section titled “Comparación con otras soluciones”Ziggy vs. URLs hardcodeadas
Section titled “Ziggy vs. URLs hardcodeadas”URLs hardcodeadas:
// URLs hardcodeadasaxios.get('/api/users/1');// Si la ruta cambia a '/api/v2/users/1', hay que actualizar cada referenciaCon Ziggy:
// Con Ziggyaxios.get(route('api.users.show', { user: 1 }));// Si la ruta cambia, no hay que modificar el código JavaScriptVentajas 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
Ziggy vs. API manual de rutas
Section titled “Ziggy vs. API manual de rutas”API manual:
// Archivo routes.js manualexport const routes = { users: { index: '/users', show: (id) => `/users/${id}`, create: '/users/create' }};
// Usoimport { routes } from './routes';axios.get(routes.users.show(1));Con Ziggy:
// Con Ziggyaxios.get(route('users.show', { id: 1 }));Ventajas de Ziggy:
- No requiere mantenimiento manual del archivo de rutas
- Sincronización automática con el backend
- Validación de parámetros incluida
Ziggy vs. Axios sin sistema de rutas
Section titled “Ziggy vs. Axios sin sistema de rutas”Axios sin sistema de rutas:
// Axios sin sistema de rutasaxios.get('/api/users');axios.post('/api/users', userData);axios.put(`/api/users/${userId}`, userData);Con Ziggy:
// Con Ziggyaxios.get(route('api.users.index'));axios.post(route('api.users.store'), userData);axios.put(route('api.users.update', { user: userId }), userData);Ventajas de Ziggy:
- Nombres semánticos para las rutas
- Consistencia con el backend
- Mejor documentación implícita (los nombres de rutas describen su propósito)
- Soporte para parámetros de ruta complejos