Laravel Blade 组件长期以来一直是可复用 UI 元素的首选解决方案。然而,默认的组件系统有时会显得不够完善,尤其是在处理深度嵌套结构或高渲染开销时。而 Dagger 组件则弥补了这一不足。
Dagger 是 John Koster 创建的一个 Laravel 扩展包,它为 Blade 组件提供了一种替代方案。John 创建此扩展包的目的是为了优化他参与过的包含大量组件的项目的性能并降低系统开销。此外,他还希望探索一些高级编译技术,以实现属性转发、槽转发和属性缓存等功能。
Dagger 编译器会在运行时之前处理组件模板,并将其直接集成到最终视图输出中,从而提升性能。因此,当渲染 Dagger 组件时,Laravel 的标准视图事件不会被触发。
要安装 Dagger,请使用 composer:
作曲家
要求
掉落物/匕首
接下来,运行 Artisan 命令来搭建所需的路径:
php
工匠
dagger:安装
这将在应用程序的资源目录中创建新目录:
资源/
匕首/
观看次数/
Dagger 允许你以与创建 Laravel 默认组件相同的方式创建组件,但它引入了一种新的函数式组件定义方法。在这种新方法中,组件定义的第一部分必须是一个 PHP 代码块,用于定义组件。
假设我们创建一个简单的
badge
成分。
@php使用
功能
液滴\匕首\组件
;成分
()
->
道具
([
'类型'
=>
'信息'
,
'信息'])
->
验证属性
([
'类型'
=>
'必需的'
,
'信息'
=>
'必需的'
,]);@endphp<
跨度
班级
=
徽章徽章-
{{
$类型
}}
“
>
{{
$消息
}}
</
跨度
>
如您所见,我们仍然可以定义属性并应用验证规则。
然后,我们可以在另一个 Blade 模板中使用以下方式引用此组件:
<c-*
使用前缀代替默认值
<x-*
Laravel 中的前缀。这有助于将它们与标准的 Blade 组件区分开来。
<
C徽章
类型
=
“成功”
信息
=
“新的”
/>
如果您想使用其他前缀,可以对其进行配置。
主要特点
Dagger 的主要特性包括:
- 访问父数据:
这样就可以使用 Blade 的函数从子组件内部访问父组件的数据。
@aware指示。 - 属性验证: 使用 Laravel 内置的验证规则来验证组件属性。
- 编译器属性:
例如,
#id属性,可用于命名嵌套组件。 - 缓存组件:
使用 Laravel 的缓存功能,因此您可以使用该功能缓存您的组件。
#cache编译器属性。 - 属性和属性转发: 一项强大的功能,允许您设置和覆盖嵌套组件的 props 和属性。
- 时隙转发: 允许您设置深度嵌套组件的内容。
- 输出修剪: 这将对组件的输出进行修剪,然后再将其渲染到客户端。
- 模板: 允许组件的使用者覆盖组件的命名部分,类似于插槽,但这是在编译时而不是运行时完成的。
- 混合料: 允许您将数据和通用行为注入到组件中。
了解更多关于此软件包的信息,包括高级使用示例 官方 Dagger 仓库 在 GitHub 上。






