Laravel 8有哪些新特性

发布时间:2021-12-28 16:46:09 作者:小新
来源:亿速云 阅读:174

这篇文章主要介绍了Laravel 8有哪些新特性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Laravel 8 已于昨天正式发布(非 LTS 版本),本次主版本发布引入了 Laravel Jetstream、模型类目录、模型工厂类、迁移文件压缩、频率限制优化、时间测试辅助函数、动态 Blade 组件等新特性。

注:有同学反馈为什么 Laravel 版本发布这么频繁,那是因为从 Laravel 6 开始引入了新的版本发布周期,具体可参考学院君之前发布的这篇教程:Laravel 6 之后新版本的发布周期介绍。

下面我们一起来速览下这些新特性:

Laravel Jetstream

Laravel Jetstream 是在之前版本上进行优化和全新设计的 Laravel UI 脚手架代码:

Laravel 8有哪些新特性  

其中包含了登录、注册、邮箱验证、双因子认证(2FA)、会话管理、基于 Laravel Sanctum 的 API 支持、以及可选的团队管理等功能。

Jetstream 使用的 CSS 框架是 Tailwind CSS,并且提供了 Livewire 和 Inertia 脚手架选项,你可以任选其一进行前端组件开发。

 

模型类目录

Laravel 8 终于在 app 目录下引入了 Models 子目录来存放模型类文件,所有通过 make:model 命令生成的模型类以后默认都会存放在这个目录下;不过,如果你选择删除这个目录,新生成的模型类将仍然存放到 app 目录下。

 

模型工厂类

从 Laravel 8 开始,Eloquent 模型工厂将基于类进行管理,从而支持不同工厂之间的关联关系,新的模型工厂调用语法如下所示,相比之前可读性更好:

use App\Models\User;

User::factory()->count(50)->create();

// 使用工厂类中定义的 "suspended" 关联方法
User::factory()->count(5)->suspended()->create();
   

迁移文件压缩

随着应用功能越来越复杂,需要创建越来越多的数据库迁移文件,可能多至上百个,管理起来有点麻烦,从 Laravel 8 开始,你可以将它们压缩到单个 SQL 文件中,该 SQL 文件会在运行迁移命令之前执行,然后再执行其他未压缩的迁移文件。该功能可以有效降低迁移文件的数量,并且在测试时提升性能。

 

优化访问频率

Laravel 8 优化了之前已经存在的访问频率限制功能 —— 支持向后兼容 throttle 中间件,并且提供了更高的灵活性。Laravel 8 引入了一个可以通过门面定义的访问频率限制器:

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for('global', function (Request $request) {
    return Limit::perMinute(1000);
});
 

正如你所看到的,for 方法中持有 HTTP 请求示例,因此你可以完全动态控制请求频率。

 

时间测试辅助函数

在 Laravel 中,一直都可以通过 PHP Carbon 库完全控制时间的修改,Laravel 8 则在此基础上往前更进一步 —— 在测试时使用一个更加方便的辅助函数来操作时间:

// 穿越到未来...
$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();
 

使用这些方法时,时间会在每个测试之间重置。

 

动态 Blade 组件

有时候你可能需要在运行时动态渲染 Blade 组件,Laravel 8 提供了一个 <x-dynamic-component/> 组件来实现这个功能:

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

感谢你能够认真阅读完这篇文章,希望小编分享的“Laravel 8有哪些新特性”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

推荐阅读:
  1. Laravel 8 队列系统的新功能和变化有哪些
  2. Laravel增加了什么方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

laravel

上一篇:如何进行WebRTC建立点对点连接的日志分析

下一篇:Fragment的陷阱有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》