Laravel Blade - Vorteil von @ slot / @ component vs @include?

8

Laravel 5.4 Blade führte das Konzept der Komponenten & amp; Slots - aber ich kann nicht sehen, was sie über das traditionelle @include hinzufügen. Wie ich es verstehe, mit Komponenten / Slots, tun Sie:

In der Vorlage component-tpl.blade.php:

%Vor%

Wenn Sie Slots in einer Seitenvorlage verwenden, tun Sie Folgendes:

%Vor%

Welche Funktionalität bietet das ältere?

%Vor%

mit der gleichen 'component-tpl.blade.php' Blade-Vorlage?

Was vermisse ich? Danke für alle Einsichten.

Chris

    
ChrisNY 27.05.2017, 02:21
quelle

3 Antworten

7

Wie gesagt, gibt es keinen funktionellen Unterschied, aber die sorgfältige Verwendung beider kann Ihnen sauberere Blade-Dateien geben.

Wenn ein Slot HTML enthalten könnte, würde die Verwendung einer Komponente eine sauberere Syntax in Ihren Blade-Dateien ermöglichen.

%Vor%

versus

%Vor%

Wenn eine Komponente keine Steckplätze hat, ist ein Include ebenfalls bevorzugt:

%Vor%

versus

%Vor%     
Rick 22.12.2017 09:06
quelle
4

Wie die Dokumentation sagt:

  

Komponenten und Steckplätze bieten ähnliche Vorteile für Sektionen und   Layouts; jedoch können einige das mentale Modell der Komponenten und finden   Slots leichter zu verstehen .

    
Denis 27.05.2017 02:29
quelle
2

Ich glaube, ich habe einen weiteren entscheidenden Unterschied herausgefunden. Zum Beispiel aus der Dokumentation für 5.4:

  

Mit der @ include-Direktive von Blade können Sie eine Blade-Ansicht in eine andere Ansicht einfügen. Alle Variablen, die für die übergeordnete Ansicht verfügbar sind, werden für die enthaltene Ansicht verfügbar gemacht:

Soweit ich feststellen kann, haben Komponenten einen Unterschiedsbereich von einer enthaltenden Ansicht und daher sind die Variablen, die für die übergeordnete Ansicht verfügbar sind, innerhalb der Komponente nicht verfügbar. Sie müssen eine Variable wie folgt an eine Komponente übergeben:

%Vor%

Diese Diskussion bezieht sich auf dieses Problem: Verwenden Sie Variablen in den Markdown Mailables

    
DavidHyogo 25.01.2018 08:12
quelle