Dagger Components: Потужна альтернатива компонентам Blade у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 28 лютого, 2025
Вас коли-небудь турбувало, що стандартна система компонентів Laravel Blade може бути обмеженою? Дізнайтеся, як пакет Dagger може оптимізувати вашу розробку, спростити створення компонентів та покращити продуктивність — читайте далі!

Компоненти Laravel Blade вже давно є стандартним рішенням для повторно використовуваних UI-елементів. Проте стандартна система компонентів іноді може здаватися обмеженою, особливо при роботі зі складними вкладеними структурами або великими обсягами рендерингу. Тут на допомогу приходять Dagger Components.

Dagger — це пакет для Laravel, розроблений Джоном Костером, який пропонує альтернативу Blade-компонентам. Джон створив цей пакет, щоб оптимізувати продуктивність у проектах з безліччю компонентів та зменшити накладні витрати. Окрім цього, він прагнув дослідити складні техніки компіляції, щоб впровадити такі функції, як передавання атрибутів, передавання слотів та кешування атрибутів.

Компілятор Dagger обробляє шаблони компонентів перед виконанням, інтегруючи їх безпосередньо у фінальний вихідний вигляд для кращої продуктивності. Внаслідок цього стандартні події перегляду Laravel не спрацьовують, коли рендеряться компоненти Dagger.

Щоб встановити Dagger, скористайтеся командою composer:

composer require stillat/dagger

Потім запустіть команду Artisan для створення необхідних шляхів:

php artisan dagger:install

Це створить нові директорії у каталозі ресурсів вашого застосунку:

resources/
  dagger/
    views/

Dagger дозволяє створювати компоненти так само, як ви робите це зі стандартними Laravel-компонентами, але вводить новий функціональний підхід до їх визначення. У цьому новому підході першим елементом у вашому визначенні компонента повинен бути PHP-блок, де ви визначаєте компонент.

Припустимо, ми створимо простий badge компонент.

@php
use function Stillat\Dagger\component;
 
component()->props([
    'type' => 'info',
    'message'
])->validateProps([
    'type' => 'required',
    'message' => 'required',
]);
@endphp
 
<span class="badge badge-{{ $type }}">{{ $message }}</span>

Як ви бачите, ми все ще можемо визначати властивості та застосовувати правила валідації.

Згодом ми можемо використовувати цей компонент в іншому шаблоні Blade, використовуючи префікс <c-* замість стандартного <x-* префікса в Laravel. Це допомагає відрізнити їх від стандартних Blade-компонентів.

<c-badge type="success" message="New" />

Префікс можна настроїти, якщо ви хочете використовувати інший.

# Ключові особливості

Основні можливості Dagger включають:

Дізнайтеся більше про цей пакет, включаючи приклади просунутого використання, в офіційному репозиторії Dagger на GitHub.