LARAVEL BLADE: EL MOTOR DE PLANTILLAS ELEGANTE Y POTENTE DE LARAVEL

Laravel Blade es el motor de plantillas nativo de Laravel. A diferencia de otros sistemas de plantillas que obligan a escribir código PHP puro mezclado con HTML, Blade ofrece una sintaxis limpia, legible y expresiva que facilita la creación de vistas dinámicas sin sacrificar el rendimiento.
Cuando se renderiza una vista Blade, ficheros con extensión ".blade.php", Laravel la compila a PHP puro y la almacena en caché, esto significa que solo se recompila cuando el archivo de plantilla cambia. Blade se encuentra en la carpeta "resources/views" y se utiliza tanto para páginas completas como para componentes reutilizables.

Características principales

Sintaxis limpia y expresiva

En lugar de escribir:

echo $nombre;
Se usa:

{{ $nombre }}
Blade escapa automáticamente el contenido para prevenir ataques XSS. Si se necesita mostrar HTML sin escapar:

{!! $html !!}

Estructuras de control

Blade ofrece directivas sencillas para condiciones, bucles y más:

@if ($usuario->esAdmin())
    Bienvenido, administrador
@elseif ($usuario->esEditor())
    Bienvenido, editor
@else
    Bienvenido, usuario
@endif

@foreach ($posts as $post)
    {{ $post->titulo }}
@endforeach

@forelse ($comentarios as $comentario)
    {{ $comentario->texto }}
@empty
    No hay comentarios
@endforelse
También existen: @unless, @isset, @empty, @auth, @guest, @can, @cannot, entre otras.

Herencia de plantillas (Layouts)

Una de las características más útiles es la herencia de plantillas. Se define un layout principal:

{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html≶
<head>
    <title>@yield('titulo') - Mi Aplicación</title>
</head>
<body>
    <header>@include('partials.nav')</header>
    <main>
        @yield('contenido')
    </main>
</body>
</html>
Y luego se extiende en otras vistas:

@extends('layouts.app')

@section('titulo', 'Página de inicio')

@section('contenido')
    <h1>Bienvenido</h1>
    <p>Este es el contenido de la página.</p>
@endsection

Componentes (Blade Components)

Desde Laravel 7, siendo mejorados en versiones posteriores, los componentes permiten crear elementos reutilizables de forma orientada a objetos:

{{-- resources/views/components/alerta.blade.php --}}
<div class="alerta alerta-{{ $tipo }}">
    {{ $slot }}
</div>
Uso:

<x-alerta tipo="exito">
    Operación realizada correctamente.
</x-alerta>
También se pueden crear componentes de clase PHP para lógica más compleja.

Inclusión de vistas parciales

@include('partials.menu')
@includeIf('partials.sidebar')   {{-- Solo si existe --}}
@includeWhen($condicion, 'partials.banner')

Stacks y push

Útiles para inyectar scripts o estilos en secciones específicas del layout:

@push('scripts')
    <script src="mi-script.js"></script>
@endpush
En el layout:

@stack('scripts')

Ejemplo completo

@extends('layouts.app')
@section('titulo', 'Lista de productos')
@section('contenido')
    <h1>Productos</h1>

    @if ($productos->isEmpty())
        <p>No hay productos disponibles.</p>
    @else
        <ul>
            @foreach ($productos as $producto)
                <li>
                    {{ $producto->nombre }} - 
                    ${{ number_format($producto->precio, 2) }}
                </li>
            @endforeach
        </ul>
    @endif
@endsection

Ventajas de usar Blade

  • Seguridad: Escape automático de variables.
  • Rendimiento: Compilación a PHP y caché.
  • Legibilidad: Sintaxis mucho más limpia que PHP puro.
  • Integración total con Laravel con rutas, autenticación, autorización, etc..
  • Componentes modernos que fomentan el código reutilizable.
  • Extensible: Se pueden crear directivas personalizadas fácilmente.