Home / News / 🎨 Laravel & Blade: crea viste eleganti e riutilizzabili | 🎨 Laravel & Blade: Create Elegant and Reusable Views

🎨 Laravel & Blade: crea viste eleganti e riutilizzabili | 🎨 Laravel & Blade: Create Elegant and Reusable Views

Blade: Un motore di template leggero e potente per organizzare i visti

Perché Blade?

Laravel inclua Blade, un modulo di template leggero e potente che consente di creare layout, sezioni e componenti di viste semplici e modulari. La principale differenza tra Blade e HTML è che Blade permette di:

  • Riutilizzare codice con layout e componenti, evitando la duplicazione e l’importanza di codice organizzato.

  • Mantenere il codice più ordino e leggibile, rendendo più semplice la creazione di pagine e layout.

  • Creare un layout base con un elenco di componenti predefiniti, come `

  • Utilizzare variabili nei componenti per personalizzare la vista e la presentazione di informazioni

    Introduzione | Introduction

    Italiano: Questo articolo è disponibile sia in italiano che in inglese. Scrolla verso il basso per la versione in inglese.

    English: This article is available in both Italian and English. Scroll down for the English version.

    🇮🇹 Versione Italiana

    Perché Blade?

    Laravel include Blade, un motore di template leggero e potente che semplifica la scrittura delle viste.

    Rispetto all’HTML puro, Blade ti permette di:

    • Riutilizzare codice con layout e componenti.
    • Evitare duplicazioni grazie a @extends, @section, @yield.
    • Mantenere il codice più ordinato e leggibile.

    Creare un layout base

    Un esempio di layout.blade.php:

    <!-- resources/views/layouts/app.blade.php -->
    <!DOCTYPE html>
    <html lang="it">
    <head>
        <meta charset="UTF-8">
        <title>@yield('title', 'Il mio sito Laravel')</title>
    </head>
    <body>
        <x-navbar />
    
        <main>
            @yield('content')
        </main>
    
        <x-footer />
    </body>
    </html>
    

    Estendere un layout

    Per creare una pagina che estende il layout:

    <!-- resources/views/home.blade.php -->
    @extends('layouts.app')
    
    @section('title', 'Homepage')
    
    @section('content')
        <h1>Benvenuto nel mio sito!</h1>
        <p>Questa è la homepage creata con Blade.</p>
    @endsection
    

    Sezioni dinamiche

    Con @section puoi definire aree diverse della pagina, ad esempio meta tag SEO o script specifici.

    @section ('meta_description', 'Benvenuto nel sito di esempio con Blade')
    

    Componenti Blade

    Un componente ti permette di creare blocchi riutilizzabili.
    Esempio: x-navbar.

    <!-- resources/views/components/navbar.blade.php -->
    <nav>
        <a href="{{ route('home') }}">Home</a>
        <a href="{{ route('about') }}">Chi Siamo</a>
        <a href="{{ route('contact') }}">Contatti</a>
    </nav>
    

    E lo richiami semplicemente con:

    <x-navbar />
    

    Include vs Componenti

    @include→ utile per piccoli frammenti statici.

    Componenti → ideali per elementi dinamici e riutilizzabili (es. navbar, card, footer).

    Best Practices

    ✅ Mantieni i layout semplici.
    ✅ Dai nomi chiari ai file (layouts/app.blade.php, components/navbar.blade.php).
    ✅ Sfrutta le variabili nei componenti (<x-alert type="success" />).
    ✅ Evita duplicazioni: DRY (Don’t Repeat Yourself).

    📌 Conclusione

    Blade è uno strumento fondamentale per organizzare le viste in un progetto Laravel.
    Con layout, sezioni e componenti puoi creare interfacce modulari, eleganti e facili da mantenere.

    🇬🇧 English Version

    Why Blade?

    Laravel includes Blade, a lightweight and powerful template engine that simplifies building views.
    Compared to plain HTML, Blade allows you to:

    • Reuse code with layouts and components.

    • Avoid duplication with @extends, @section, @yield.

    • Keep your code clean and readable.

    Creating a base layout

    Example layout.blade.php:

    <!-- resources/views/layouts/app.blade.php -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>@yield('title', 'My Laravel Site')</title>
    </head>
    <body>
        <x-navbar />
    
        <main>
            @yield('content')
        </main>
    
        <x-footer />
    </body>
    </html>
    

    Extending a layout

    To create a page extending the layout:

    
    <!-- resources/views/home.blade.php -->
    @extends('layouts.app')
    
    @section('title', 'Homepage')
    
    @section('content')
        <h1>Welcome to my site!</h1>
        <p>This is the homepage created with Blade.</p>
    @endsection
    

    Dynamic sections

    With @section you can define different page areas, like SEO meta tags or page-specific scripts.

    
    @section('meta_description', 'Welcome to this Blade example site')
    

    Blade Components

    A component allows you to create reusable blocks.
    Example: x-navbar.

    <!-- resources/views/components/navbar.blade.php -->
    <nav>
        <a href="{{ route('home') }}">Home</a>
        <a href="{{ route('about') }}">About</a>
        <a href="{{ route('contact') }}">Contact</a>
    </nav>
    
    

    And you can call it simply with:

    <x-navbar />
    

    Include vs Components

    @include → useful for small static snippets.

    Components → best for reusable and dynamic elements (e.g. navbar, cards, footer).

    Best Practices

    ✅ Keep layouts simple.
    ✅ Use clear file names (layouts/app.blade.php, components/navbar.blade.php).
    ✅ Use variables in components (<x-alert type="success" />).
    ✅ Avoid duplication: DRY (Don’t Repeat Yourself).

    📌 Conclusion

    Blade is an essential tool for organizing views in a Laravel project. With layouts, sections, and components, you can build modular, elegant, and easy-to-maintain interfaces.

    Traduzione

    Questo articolo è stato tradotto con l’ausilio di strumenti di traduzione professionali.
    This article was translated with the help of professional translation tools.

Tagged:

Leave a Reply

Your email address will not be published. Required fields are marked *