Cargando…

Esto está tardando más de lo esperado.

Estándares de código

Alpine.js and Livewire

Estos son los estándares que aplica el analizador. Cada regla dice qué revisa y por qué existe.

Todos los estándares

Límites entre Alpine y Livewire

Esta regla aclara cuándo usar Alpine.js para la interactividad y cuándo usar componentes de Livewire para lógica frontend compleja en vistas Blade.
Alpine.js está pensado para interacciones simples y pequeños fragmentos de comportamiento dinámico directamente en plantillas Blade.

  • Usa Alpine.js para alternancias simples de UI, pequeñas animaciones, propiedades reactivas básicas y manejo de eventos que no requiera comunicación con el backend ni estado complejo.
  • Evita incrustar cualquiera de los siguientes comportamientos complejos en Alpine.js dentro de plantillas Blade:
    • Temporizadores, intervalos o lógica de reloj.
    • Implementaciones de arrastrar y soltar.
    • Flujos de trabajo de varios pasos o secuencias condicionales.
    • Gestión de estado compleja que involucre múltiples propiedades relacionadas.
    • Lógica de ordenación o clasificación.
    • Estructuras de datos extendidas (arrays, objetos) más allá de indicadores reactivos muy simples.

Livewire debe usarse para lógica de UI compleja, gestión de estado, interacciones con el servidor y flujos de trabajo de usuario de varios pasos.

  • Mueve toda la lógica JavaScript sustancial, el comportamiento con estado, los temporizadores, la ordenación y las interacciones de varios pasos impulsadas por eventos fuera de Alpine.js y hacia componentes de Livewire.
  • Los componentes de Livewire gestionan la coordinación con el backend, el estado de larga duración, la obtención de datos, la gestión del estado de formularios y las transiciones del flujo de trabajo.

Excepciones de rendimiento:

  • Si Livewire provoca una latencia de UI inaceptable para actualizaciones o animaciones muy rápidas, Alpine.js puede usarse con cautela.
  • El uso de Alpine.js por motivos de rendimiento debe documentarse explícitamente con comentarios justificados que hagan referencia a esta regla.

Marca las vistas Blade que incrusten código de Alpine.js que implemente:

  • Intervalos de temporizador o reloj.
  • Reordenación mediante arrastrar y soltar.
  • Lógica de ordenación o clasificación.
  • Coordinación de múltiples estados que involucre varias propiedades.
  • Flujos de trabajo complejos impulsados por eventos.

Cuando se marque, recomienda mover esa lógica a un componente de Livewire. No exijas comentarios de documentación a menos que Alpine.js se use intencionadamente para lógica compleja como una excepción de rendimiento documentada.
Ejemplos:

<!-- Simple Alpine toggle example -->
<div x-data="{ open: false }">
    <button @click="open = !open">Toggle</button>
    <div x-show="open">Content</div>
</div>
// Complex Livewire component example
class TaskTracker extends Livewire\Component
{
    public $activeTask;
    public $timerSeconds = 0;

    public function startTimer() { /* ... */ }
    public function stopTimer() { /* ... */ }

    public function render()
    {
        return view('livewire.task-tracker');
    }
}
Weblabor Logo Desarrollado por Weblabor