Laravel 8.x新特性全解析
好的Laravel 8.x 版本引入了多项重要特性和改进以下是主要亮点 Jetstream 应用脚手架Laravel 8 引入了Jetstream这是一个现代化的应用脚手架替代了之前的laravel/ui包。Jetstream 提供基于Livewire或Inertia.js的前端栈选择开箱即用的用户认证登录、注册、邮箱验证、双因素认证团队管理功能适用于 SaaS 类应用API 支持通过 Sanctum// 安装 JetstreamLivewire 版本 composer require laravel/jetstream php artisan jetstream:install livewire npm install npm run dev 模型工厂类模型工厂从闭包形式升级为基于类的语法更符合面向对象设计// 定义工厂 class UserFactory extends Factory { public function definition() { return [ name $this-faker-name(), email $this-faker-unique()-safeEmail(), ]; } } // 使用工厂 User::factory()-count(5)-create();️ 路由优化默认路由模型绑定无需显式绑定如Route::get(users/{user})路由命名空间不再默认添加App\Http\Controllers前缀需显式声明Route::get(/profile, [ProfileController::class, show]); 模型目录调整默认模型存放路径从项目根目录移至app/Models/例如namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { // ... } 迁移批处理新增Schema::whenTableDoesntHaveColumn()方法简化迁移文件中对已有表的修改Schema::table(users, function (Blueprint $table) { $table-whenTableDoesntHaveColumn(email_verified_at, function ($table) { $table-timestamp(email_verified_at)-nullable(); } ); }); 事件监听优化支持基于接口的事件监听注册class OrderShippedListener implements ShouldQueue { public function handle(OrderShipped $event) { // 处理逻辑 } }⚡ 速率限制增强throttle中间件支持更灵活的速率限制配置Route::middleware(throttle:10,1)-group(function () { Route::get(/api/data, [DataController::class, index]); }); 测试辅助方法新增assertSoftDeleted()方法用于测试软删除public function test_user_soft_delete() { $user User::factory()-create(); $user-delete(); $this-assertSoftDeleted($user); } 队列批处理新增Batchable接口支持任务批量处理及进度跟踪$batch Bus::batch([ new ProcessPodcast(), new CompressPodcast(), ])-then(function (Batch $batch) { // 批量完成回调 })-dispatch(); Blade 组件标签引入类似 Vue 的组件标签语法提升模板可读性x-alert typeerror :message$message x-slot nametitleError!/x-slot /x-alert 其他更新PHP 版本要求最低 PHP 7.3默认邮件模板使用 Tailwind CSS 重写路由缓存优化支持闭包路由缓存artisan serve改进默认启用更安全的--host选项升级建议使用 Composer 更新至最新 8.x 版本composer update laravel/framework建议结合官方升级指南Laravel 8.x Upgrade Guide 进行迁移。