美文网首页
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