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;
{{ $nombre }}
{!! $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
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>
@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>
<x-alerta tipo="exito">
Operación realizada correctamente.
</x-alerta>
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
@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.