美文网首页
Laravel 8新功能

Laravel 8新功能

作者: 追梦人在路上不断追寻 | 来源:发表于2020-10-18 23:02 被阅读0次

1Laravel Jetstream

版本8引入了Laravel Jetstream,它是具有时尚用户仪表板的框架应用程序支架。Jetstream处理从登录,注册和电子邮件验证到会话管理和可选团队管理的所有事务。它使用高度可定制的CSS框架Tailwind设计,可在LivewireInertia之间进行选择。

首先,运行以下命令:

npm install && npm run dev
php artisan serve

确保将数据库名称添加到.env文件并进行迁移。

刷新后,您会看到通常的Laravel欢迎页面(尽管看起来有些不同,而且更加流畅)。单击注册链接以注册您的帐户,并导航/dashboard以查看新的仪表板:

此时,如果您运行

php artisan vendor:publish — tag=jetstream-views

并查看下方resources/views/vendor/jetstream/components,将立即获得可用的可用组件列表。welcome.blade.php例如,将在您的应用程序中用作<x-jet-welcome />

2.模型目录

瞧,我们一直在等待-模型目录!

在版本8之前,所有现有和新生成的模型都位于框架/app目录的根目录中。然后大多数人将创建一个Models子文件夹,将所有模型移动到所述文件夹并更改其名称空间以反映新路径。当我说我们不热衷于这种设置时,我想我为社区代言!但是,通过最新的更新,Otwell可以弥补这一不足。所有模型生成器命令均已更新,可以将新模型放置在*Models*文件夹中。如果该目录尚不存在,则会为您创建一个目录以及新模型。

3.模型工厂类

基于类的工厂取代了我们以前知道的模型工厂。

Laravel 7

/ ** 
*运行数据库种子。
* 
* @return void 
* /
公共功能run()
{ 
 factory(App \ User :: class,50)-> create()-> each(function($ user){ 
 $ user-> posts()-> save( factory(App \ Post :: class)-> make()); 
 }); 
}

Laravel 8


use App \ Models \ User;/ ** 
*运行数据库种子。
* 
* @return void 
* /
public function  run()
{ 
 User :: factory()
 -> times(50)
 -> hasPosts(1)
 -> create(); 
}

4.迁移压缩

这项很酷的新功能使笨重的迁移文件夹已成为过去。引入了迁移压缩,使所有迁移都可以压缩到单个SQL文件中。

运行以下命令将创建一个带有SQL文件的文件schemadatabase,该文件包含用于所有迁移的CREATE TABLE查询:

PHP的工匠模式:转储

要删除仅保留SQL文件的迁移,请运行以下命令:

php artisan schema:dump --prune

php artisan migrate然后将首先运行SQL模式,然后运行尚未包含在文件中的任何新迁移migrations。要包括向架构文件的新迁移,只需schema:dump再次运行命令。

5.作业分批

Laravel的新作业批处理功能允许使用立面的新batch方法分派多个作业Bus。然后,您当然可以使用和之类的方法thenfinallycatch自定义其完成方式。

6.改进的速率限制

与以前的版本相比,现在可以以更加灵活和封装的方式来设置路由的命中率限制。使用RateLimiter立面的for方法,可以设置极限时间,甚至可以根据接收到的时间动态设置极限时间$request

Laravel 7

Route::middleware('auth:api','throttle:60,1')-> group(function(){ 
 Route :: get('/ user',function(){ 
 // 
 }); 
});

Laravel 8

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

RateLimiter :: for('global',function(Request $ request){
 return $ request-> user()-> vipCustomer() ? Limit :: none() : Limit :: perMinute(100); 
});

要在某些路由上利用这些限制,请像使用任何传递给该for方法的名称的中间件一样应用它们:

Route::middleware(['throttle:global'])->group(function(){ 
    Route::post('/audio',function(){ 
    });
    Route :: post('/video',function(){ 

    }); 
});

但是,为了使用先前版本的throttle中间件API ,已经保持了向后兼容性。

7.改进的维护模式

尽管您的应用程序处于维护模式,但是Laravel允许特定用户查看它,只要他们满足特定条件即可。现在,这种情况已更改-以前需要IP地址,现在是秘密令牌。

Laravel 7

php artisan down --allow = 127.0.0.1 --allow = 192.168.0.0 / 16

Laravel 8

php artisan down --secret =“ 1630542a-246b-4b66-afa1-dd72a4c43515”

将Cookie保存到浏览器后,就可以像在维护模式之外一样重新访问该应用程序!

预渲染维护模式视图

作为维护模式改进的一部分,您现在可以预渲染特定的维护视图。

php artisan down在部署期间运行,那么在更新任何依赖关系以反映新模式之前,如果用户点击应用程序,仍然有可能遇到错误。使用此添加项,可以指定您选择的维护模式视图,并在请求周期开始时立即显示该视图,因此无需等待框架启动。

php artisan down --render =“错误:: 503”

8.封闭调度/链

添加了一个新catch方法,如果排队关闭无法成功完成,将执行该方法。这对于自定义发生故障时发生的情况非常有用。

Laravel 7

$ podcast = App \ Podcast :: find(1);dispatch(function()use($ podcast){ 
 $ podcast-> publish(); 
});

Laravel 8

$ podcast = App \ Podcast :: find(1);dispatch(function()use($ podcast){ 
 $ podcast-> publish(); 
})-> catch(function(Throwable $ e){ 
 //这项工作失败了... 
});

9.动态刀片组件

现在,您不再需要将组件名称硬编码到页面上,而可以根据运行时值或变量来呈现它们!

Laravel 7

php artisan make:componentsicence

要显示组件,您将使用以下命令:

Laravel 8

让我们看看如何实现此目标。

首先,使用创建组件php artisan make:component <component-name>。我决定打电话给我success

然后选择一条路线,并通过其控制器将相关数据传递到视图:

选择在中渲染动态组件show.blade.php/user/profile现在,从仪表板导航到,应显示成功文本:

这对于动态加载成功或错误组件非常有用。只需将名称传递给视图(在此示例中,变量为message,值即为成功),只要有一个具有该名称的组件,Laravel就会为您动态呈现它。

10.事件监听器的改进

事件侦听器已得到改进,以包括Closure基于事件侦听器的注册。这可以通过仅将传递ClosureEvent::listen方法来完成。此外,这些新的Closure基于事件的监听器也可以被标记为queueable和,像排队的作业,通常的现有方法- onConnectiononQueuedelay-可被用于定制排队听者的执行。

Event :: listen(queueable(function(PodcastProcessed $ event){ 
 // 
}));

queueable当然,标记是可选的,可以删除。

11.时间测试助手

此新更新为我们带来了一些帮助程序,这些帮助程序允许修改测试时返回的时间戳。的介绍travel()可与著名now()人士一起使用,以进入未来,穿越时空并回到现在。

//进入过去的
$ this-> travel(-5)-> hours();//回到现在的
$ this-> travelBack();</pre>

12.根据环境变化自动重新加载

.env现在,在文件中检测到的所有更改都将触发自动重新加载,而无需手动停止和重新启动serve命令。

1 Tailwind成为分页器的默认样式

但是Bootstrap 3和Bootstrap 4视图仍然可用!

14.路由命名空间更新

RouteServiceProvider版本7及更低版本中的类包含一个$namespace属性。然后将此属性的值添加到路由文件中列出的所有路由的前缀。Laravel的此较新版本删除了名称空间,而类名直接在路由文件中使用。

Laravel 7

RouteServiceProvider extends ServiceProvider{
/ ***此名称空间适用于您的控制器路由。*另外,它被设置为URL生成器的根名称空间。** @var字符串* /
    protected $namespace ='App\Http\Controllers';
}
Route: get('/users','UserController@index');

Laravel8


use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);

相关文章

网友评论

      本文标题:Laravel 8新功能

      本文链接:https://www.haomeiwen.com/subject/dndhmktx.html