[身份验证脚手架] docs | breeze:install
链接:https://laravel.com/docs/12.x/starter-kits#laravel-breeze
docs:Breeze
Breeze是一个Laravel启动套件,旨在为Web应用快速搭建用户认证系统。
它提供了用户管理(如登录、注册和密码重置)的预构建后端逻辑,
并生成所有必需的前端UI组件。开发者可以选择不同的**前端技术栈**
(如Blade、React、Vue或Livewire)来启动项目,获得一个功能完整的认证系统。
可视化
章节
- Breeze安装命令
- 前端认证和个人资料UI
- 认证路由
- 认证后端控制器和请求
- 应用布局
- 技术栈特定安装逻辑
第1章:Breeze安装命令
欢迎来到Laravel Breeze的学习之旅~
在本章中,我们将揭开使用Breeze的第一步:其强大的安装命令。
入门:Web开发中的效率需求
想象您正在启动一个全新的Web项目。几乎每个网站都需要用户创建账户、登录和管理个人资料的功能。
从头开始构建所有这些基础功能需要耗费大量时间和精力。您需要设计表单
、编写用户创建和登录的后端逻辑
、处理密码
等等。
这就是Laravel Breeze的用武之地~
Breeze就像一个得力的助手,为您预先设置好所有这些常见的用户认证功能,开箱即用。
它为您提供了一个干净、简单的起点,让您可以专注于构建应用的独特部分,而不是重复基础工作
。
这个神奇设置的核心工具就是**breeze:install
命令**。
什么是breeze:install
命令?
将breeze:install
视为您Laravel应用的智能安装程序。
当您运行此命令时,它会询问几个简单问题,了解您希望应用的外观和工作方式。根据您的回答,它会自动配置所有必要的文件、库和设置,为您提供一个功能完整的认证系统。
这就像走进一家餐厅,只需说:"请给我一份汉堡配薯条和饮料。"您不需要告诉他们如何煎肉饼、切土豆或倒饮料;他们只需根据您的简单要求为您准备好一切
以下是breeze:install
帮助您决定的关键事项:
- 前端技术栈:这是用于构建用户界面(用户看到和交互的内容)的技术。Breeze提供了几种流行选择:
- Blade:Laravel自有的模板引擎,通常与
Alpine.js
搭配使用以实现交互性。非常适合传统的服务器端渲染应用。 - React或Vue:
流行的JavaScript框架
,通常与Inertia.js一起使用,创建现代的单页应用(SPA),体验非常流畅。 - Livewire:一个绝佳选择,仅使用PHP就能构建动态界面,避免复杂的JavaScript。
- 仅API:如果您正在构建移动应用或独立前端,可能只需要后端认证逻辑,不需要用户界面。
- Blade:Laravel自有的模板引擎,通常与
- 可选功能:您还可以选择额外功能,如:
- 暗黑模式:一种流行的视觉主题,对眼睛更友好。
- TypeScript:一种编写更健壮、无错误JavaScript代码的方式。
- Pest或PHPUnit:您偏好的测试工具,用于确保代码正确工作。
如何使用breeze:install
命令
使用breeze:install
非常简单。您需要在Laravel项目内的终端(命令提示符)中运行它。
首先,确保已安装Laravel。如果您刚创建了一个新的Laravel项目,可能会在之后立即运行Breeze安装。
开始只需输入:
php artisan breeze:install
运行此命令后,Breeze将在终端中开始询问问题。让我们看一个示例:
php artisan breeze:install您想安装哪种Breeze技术栈?[0] Blade with Alpine[1] Livewire (Volt Class API) with Alpine[2] Livewire (Volt Functional API) with Alpine[3] React with Inertia[4] Vue with Inertia[5] API only> 0 // 本例中选择Blade
这里我们选择了0
表示"Blade with Alpine"。接下来,Breeze可能会询问可选功能:
需要暗黑模式支持吗?(yes/no) [no]:> no // 暂时跳过暗黑模式偏好哪种测试框架?[0] Pest[1] PHPUnit> 0 // 选择Pest
回答完所有问题后,Breeze将开始工作~
接下来会发生什么?
该命令将:
- 安装Composer包:这些是Breeze运行所需的PHP库。
- 安装Node模块:这些是您选择的前端技术栈所需的JavaScript库(如用于样式的Tailwind CSS)。
- 复制文件:Breeze会将许多新文件放入您的项目中,包括:
- 登录、注册和个人资料页面。
- CSS样式文件。
- 用于交互的JavaScript文件。
- 处理认证逻辑的后端PHP文件。
- 更新配置:它可能会调整一些现有的Laravel配置文件,确保一切协同工作。
最后,它会提示您运行一些额外命令:
Breeze脚手架安装成功。
请执行"npm install && npm run dev"编译资源。
请执行"php artisan migrate"创建数据库表。
这些步骤至关重要:
npm install && npm run dev
:编译前端资源(CSS和JavaScript),使您的用户界面正确显示和工作。php artisan migrate
:在数据库中创建必要的表(如存储用户信息的users
表),供Breeze使用。
完成这些步骤后,您的Laravel应用将拥有一个功能完整的认证系统~
内部机制:breeze:install
如何工作
当您输入php artisan breeze:install
时,实际上是在告诉Laravel运行一个名为InstallCommand
的特定代码。这个命令很智能,因为它知道如何根据您的选择设置项目。
让我们看看事件的简化序列:
InstallCommand
(src/Console/InstallCommand.php
)是所有逻辑所在之处。
让我们看看该文件的几个简化代码片段,了解其工作原理:
// 文件: src/Console/InstallCommand.phpnamespace Laravel\Breeze\Console;use Illuminate\Console\Command;
use Symfony\Component\Console\Attribute\AsCommand;#[AsCommand(name: 'breeze:install')]
class InstallCommand extends Command
{/*** 控制台命令的名称和签名。*/protected $signature = 'breeze:install {stack : 开发技术栈...}{--dark : 表示支持暗黑模式...}{--pest : 表示应安装Pest}{--typescript : 表示偏好TypeScript...}';// ... (类的其他部分)
}
第一个片段展示了命令本身的定义。$signature
属性告诉Laravel我们的命令名为breeze:install
,它可以接受一个名为stack
的参数(如’blade’或’react’),以及各种"选项",如--dark
或--pest
。这些是您在交互式设置过程中做出的选择。
接下来,handle()
方法是主要操作发生的地方。它检查您选择了哪个stack
,然后调用特定方法来安装该技术栈:
// 文件: src/Console/InstallCommand.php (简化的handle方法)// ...class InstallCommand extends Command
{// .../*** 执行控制台命令。*/public function handle(){// 检查您提供的'stack'参数if ($this->argument('stack') === 'vue') {return $this->installInertiaVueStack();} elseif ($this->argument('stack') === 'react') {return $this->installInertiaReactStack();} elseif ($this->argument('stack') === 'blade') {return $this->installBladeStack(); // 如果选择'Blade'则运行此方法}// ... 其他技术栈如Livewire或API的处理// 每个方法包含特定逻辑// 用于复制文件和安装该技术栈所需的包$this->components->error('无效的技术栈...');return 1;}// ... (类的其他部分)
}
如您所见,如果选择了blade
技术栈,将调用installBladeStack()
方法。
该方法然后处理设置Blade前端的所有特定步骤,如复制Blade模板、设置Tailwind CSS以及安装必要的PHP和JavaScript包。我们将在后续章节技术栈特定安装逻辑中更深入探讨这些技术栈特定的安装工作。
最后,Breeze如何知道询问这些交互式问题?它使用promptForMissingArgumentsUsing()
和afterPromptingForMissingArguments()
等辅助方法:
// 文件: src/Console/InstallCommand.php (简化的提问方法)// ...class InstallCommand extends Command
{// .../*** 使用返回的问题提示缺少的输入参数。*/protected function promptForMissingArgumentsUsing(){return ['stack' => fn () => select( // 'select'是询问带选项问题的辅助函数label: '您想安装哪种Breeze技术栈?',options: ['blade' => 'Blade with Alpine','livewire' => 'Livewire (Volt Class API) with Alpine',// ... 其他技术栈选项],),];}/*** 如果用户被提示缺少参数,则进一步与用户交互。*/protected function afterPromptingForMissingArguments(InputInterface $input, OutputInterface $output){$stack = $input->getArgument('stack'); // 获取选择的技术栈// 如果技术栈是React或Vue,询问可选功能if (in_array($stack, ['react', 'vue'])) {// 'multiselect'询问可以选择多个答案的问题// ... 询问暗黑模式、SSR、TypeScript、ESLint} elseif (in_array($stack, ['blade', 'livewire', 'livewire-functional'])) {// 对于Blade/Livewire,只需用简单的确认询问暗黑模式$input->setOption('dark', confirm(label: '需要暗黑模式支持吗?'));}// 总是询问测试框架$input->setOption('pest', select(label: '偏好哪种测试框架?') === 'Pest');}
}
这些方法定义了您在终端中看到的交互式问题。
它们允许breeze:install
在开始设置项目之前收集您的偏好。
结论
breeze:install
命令是快速为Laravel应用添加基本用户认证功能的强大入口。
它将复杂的设置过程简化为几个交互式问题,让您选择偏好的前端技术和可选功能。
通过运行此命令并执行后续的npm install && npm run dev
和php artisan migrate
步骤,您将为安全且用户友好的应用奠定基础。
在下一章中,我们将探索运行此命令后立即获得的内容:用于认证和用户资料的实际前端用户界面~