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.