Laravel 8 新特性: 动态Blade组件、事件监听器优化、事件测试助手

简介: Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。

Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。


有时我们需要渲染一个组件,但是不确定在运行时应该渲染哪个组件。在这种情况下,我们现在可以使用 Laravel 内置的 dynamic-component 组件去根据运行时的某个值或某个变量来动态渲染组件:


<x-dynamic-component :component="$componentName" class="mt-4" />


事件监听器优化


现在可以通过给 Event::listen 方法传入一个闭包函数来简单的注册一个基于闭包的事件监听器。Laravel 会检查闭包以确定监听器处理的事件类型。


use App\Events\PodcastProcessed;
use Illuminate\Support\Facades\Event;
Event::listen(function (PodcastProcessed $event)     {
    //
});


此外,现在可以使用 Illumate\Events\Queueable 函数将基于闭包的事件监听器标记为可排队:


use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
Event::listen(queueable(function (PodcastProcessed $event) {
    //
}));


像队列任务一样,我们可以使用 onConnection、onQueue 和 delay 方法自定义队列监听器的执行:


Event::listen(queueable(function (PodcastProcessed $event) {
    //
})->onConnection('redis')->onQueue('podcasts')->delay(now()->addSeconds(10)));


如果我们想处理匿名队列的监听器故障,可以在定义 queueable 监听器时给 catch 方法提供一个闭包:


use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
use Throwable;
Event::listen(queueable(function (PodcastProcessed $event) {
    //
})->catch(function (PodcastProcessed $event, Throwable $e) {
    // The queued listener failed...
}));


时间测试助手


测试时,我们有时可能需要修改诸如 now 或 Illuminate\Support\Carbon::now() 之类的函数返回的时间。 Laravel 的基本功能测试类现在包括时间测试助手函数,我们可以使用它们来操纵当前时间:


public function testTimeCanBeManipulated()
{
    // 时间穿越至未来...
    $this->travel(5)->milliseconds();
    $this->travel(5)->seconds();
    $this->travel(5)->minutes();
    $this->travel(5)->hours();
    $this->travel(5)->days();
    $this->travel(5)->weeks();
    $this->travel(5)->years();
    // 时间穿越至过去...
    $this->travel(-5)->hours();
    // 前往明确的时间...
    $this->travelTo(now()->subHours(6));
    // 回到当前时间...
    $this->travelBack();
}


相关文章
|
5天前
|
监控 测试技术 持续交付
软件测试中的性能瓶颈分析与优化策略
性能瓶颈,如同潜伏于软件深处的隐形障碍,悄然阻碍着系统的流畅运行。本文旨在揭示这些瓶颈的形成机理,剖析其背后的复杂成因,并汇聚一系列针对性的优化策略,为软件开发者提供一套系统性的解决方案。
|
12天前
|
监控 算法 测试技术
软件测试中的性能瓶颈分析与优化策略
本文旨在深入探讨软件测试过程中性能瓶颈的识别与优化方法。通过对性能瓶颈的概念、分类及其成因进行分析,结合实际案例,提出一套系统的性能瓶颈诊断流程和针对性的优化策略。文章首先概述了性能瓶颈的基本特征,随后详细介绍了内存泄漏、资源竞争、算法效率低下等常见瓶颈类型,并阐述了如何通过代码审查、性能监测工具以及负载测试等手段有效定位问题。最后,结合最佳实践,讨论了代码级优化、系统配置调整、架构改进等多方面的解决措施,旨在为软件开发和测试人员提供实用的性能优化指导。
|
21天前
|
关系型数据库 MySQL 测试技术
《性能测试》读书笔记_数据库优化
《性能测试》读书笔记_数据库优化
24 7
|
5天前
|
缓存 监控 算法
软件测试中的性能瓶颈定位与优化策略
性能瓶颈,如同隐藏在系统深处的“拦路虎”,悄无声息地制约着软件的表现。本文将揭示如何通过一系列科学方法,识别并消除这些障碍,从而显著提升软件性能,确保用户享受到流畅无阻的数字体验。
|
2月前
|
存储 人工智能 自然语言处理
知识库优化增强,支持多种数据类型、多种检索策略、召回测试 | Botnow上新
Botnow近期对其知识库功能进行了全面升级,显著提升了数据处理能力、检索效率及准确性。新版本支持多样化的数据格式,包括PDF、Word、TXT、Excel和CSV等文件,无需额外转换即可直接导入,极大地丰富了知识来源。此外,还新增了细致的文本分片管理和编辑功能,以及表格数据的结构化处理,使知识管理更为精细化。 同时,平台提供了多种检索策略,包括混合检索、语义检索和全文检索等,可根据具体需求灵活选择,有效解决了大模型幻觉问题,增强了专业领域的知识覆盖,从而显著提高了回复的准确性。这些改进广泛适用于客服咨询、知识问答等多种应用场景,极大提升了用户体验和交互质量。
58 4
|
2月前
|
测试技术
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
27 2
|
2月前
|
测试技术
软件测试中的心理学:如何优化测试流程
【8月更文挑战第6天】本文深入探讨了软件测试过程中的心理学因素,揭示了测试人员的心理动态对测试效率和质量的影响。通过分析测试人员的压力源、动机以及团队间的沟通问题,提出了一系列改善策略,如建立积极的反馈机制、提供持续的职业培训和优化工作环境等,旨在提升软件测试的整体效能。文章最后提出一个开放性问题,邀请读者思考如何在不断变化的技术环境中维持测试团队的心理健康和动力。
|
2月前
|
Java 测试技术
hyengine microbench测试问题之提升jit优化如何解决
hyengine microbench测试问题之提升jit优化如何解决
|
2月前
|
SQL 缓存 关系型数据库
MySQL配置简单优化与读写测试
MySQL配置简单优化与读写测试
|
3月前
|
机器学习/深度学习 算法 搜索推荐
优化IAA广告策略:通过A/B测试和实时反馈提高广告效果
【7月更文第30天】本文将介绍如何使用数据分析技术,特别是A/B测试和实时反馈机制,来改进移动应用内的广告策略。我们将展示一个实际案例,包括如何设置实验、收集数据、分析结果,并根据这些结果调整广告策略以实现更好的用户参与度和收入增长。
158 0
下一篇
无影云桌面