Blade Templates
Blade es el motor de plantillas incluido en Laravel. A diferencia de otros motores, Blade no impide usar PHP puro en las vistas, pero proporciona una sintaxis mas limpia y funcionalidades adicionales como herencia de layouts y componentes.
Sintaxis basica
{{-- Mostrar datos (con escape automatico contra XSS) --}}
<h1>{{ $post->title }}</h1>
{{-- Directivas de control --}}
@if($posts->count() > 0)
@foreach($posts as $post)
<article>
<h2>{{ $post->title }}</h2>
<p>{{ $post->excerpt }}</p>
</article>
@endforeach
@else
<p>No hay posts disponibles.</p>
@endif
Componentes Blade
Desde Laravel 7+, Blade soporta componentes basados en clases y componentes anonimos, similares a los frameworks frontend modernos.
{{-- Componente anonimo resources/views/components/alert.blade.php --}}
@props(['type' => 'info', 'message'])
<div class="alert alert-{{ $type }}">
{{ $message }}
</div>
{{-- Uso del componente --}}
<x-alert type="success" message="Operacion completada" />
Layouts
{{-- Layout principal --}}
<html>
<body>
@yield('content')
</body>
</html>
{{-- Vista hija --}}
@extends('layouts.app')
@section('content')
<h1>Mi pagina</h1>
@endsection
Blade compila las vistas a PHP puro y las cachea, por lo que no tiene impacto en el rendimiento. Es la opcion por defecto para renderizado del lado del servidor en Laravel.