Laravel认证脚手架UI,Jetstream,Fortify,Breeze的比较
一直以来我们都使用Laravel/ui脚手架来进行用户认证,但自Laravel6版本之后,Laravel/ui发布为单独的扩展包,所以再使用的时候需要先安装laravel/ui扩展包,然后才能启用认证。
目前Laravel的认证扩展包真的是眼花缭乱,太TMD多了,我为官方的这一举措感到迷茫,并非常不解为什么要搞这么多认证脚手架,为什么不能基于Laravel/ui继续改进呢?狂躁
但毕竟是官方推出的,又是官方推荐的,我们就耐心看看这些认证脚手架到底有什么区别以及我们为什么需要使用这些脚手架:
UI (laravel/ui)
在此包存在之前,身份验证是在Laravel中使用artisan auth:make命令生成的。如果你用过之前的Laravel版本您应该知道此命令。
后来auth:make提供的功能被删除,并放入一个名为laravel/ui的单独包中。这意味着您必须使用Composer安装此包,然后才能使用artisan命令来生成身份验证脚手架。
很长一段时间以来,这是唯一一个官方支持的身份验证脚手架。如果你没有使用此扩展包,则必须自己构建身份验证、密码重置和其他功能。该软件包还提供了使用JS、Vue或React的选择。
幸运的是你今天仍然可以使用它!
在以下情况下使用此软件包:
- 你想采用一种简单的方式来启用身份认证功能
- 您更喜欢Bootstrap,不想花时间学习Tailwind等新的前端框架(稍后讨论)
Jetstream
Laravel Jetstream与Laravel 8一起发布,它是Laravel/ui包的一个巨大飞跃,包含了完全不同的脚手架体验(P:没看出来)。它包括Laravel Livewire or Inertia.js所有的预设,并移除了Bootstrap采用Tailwind。
Jetstream还提供了比laravel/ui现成的更多功能,Jetstream 为 Laravel 提供了精美设计的应用程序脚手架代码,包括登录、注册、邮箱验证、双因子认证、会话管理、基于 Laravel Sanctum 的 API 支持,以及可选的团队管理功能。Jetstream 使用 Tailwind CSS 设计样式,并提供 Livewire 或 Inertia.js 驱动的前端脚手架技术栈供你选择。
在幕后,Jetstream使用Fortify(稍后讨论)来驱动身份验证功能。通过使用Jetstream搭建应用程序,您也可以使用Fortify,因此你可以使用它现在或将来提供的任何功能。
Jetstream大量使用blade组件来创建可重用的UI元素,如表单输入。因此,如果您不熟悉blade组件或希望快速开始大量定制UI,则必须花一些时间从头开始使用自己的样式重新创建组件。这既是积极的,也是消极的,因为将常见UI元素组件化是一种很好的做法,但对于预构建的解决方案,您可能需要更改现成的组件。
默认情况下,Jetstream中包含Tailwind,这是一个基于实用程序的CSS框架,尽管可以将其替换为其他框架,或者什么都不做。然而,您必须重建Jetstream的所有组件,因为它们都使用Tailwind样式。
最后,Jetstream使用Alpine.js,这是一个最小的JavaScript框架。
在以下情况下使用Jetstream:
- 您熟悉Laravel Livewire、Inertia和Tailwind,或者不介意花时间学习它们;
- 您希望立即开始构建应用程序的核心功能,而无需在范例上投入太多时间。
如果您认为Jetstream可能适合您,请查看Laravel Jetstream course课程和Laravel Jetstream Teams course团队课程,以了解最新情况!
Fortify
Laravel Fortify 是一个与前端无关的身份认证后端实现。Fortify 注册了所有实现 Laravel 身份验证功能所需的路由和控制器,包括登录,注册,重置密码,邮件认证等。安装 Fortify 之后,你可以运行 Artisan 命令 route:list 来查看 Fortify 已注册的路由。
由于 Fortify 不提供其自己的用户界面,因此应与你自己的用户界面配对,该用户界面向其注册的路由发出请求。在本文档的其余部分中,我们将进一步讨论如何向这些路由发出请求。
在以下情况下使用Fortify:
- 您不想使用Jetstream,但需要它提供的大部分功能。
- 您希望从构建应用程序的一开始就完全控制样式和功能,比如前后端分离的项目
Breeze
Laravel Breeze 是 Laravel 的所有 认证功能 的最小、简单的实现,包括登录、注册、密码重置、电子邮件验证和密码确认。 Laravel Breeze 的默认视图层由简单的 Blade 模板 组成,并使用 Tailwind CSS 进行样式设置。
Breeze 为开始一个全新的 Laravel 应用程序提供了一个很好的起点,对于计划使用 Laravel Livewire 将其 Blade 模板提升到新水平的项目来说,它也是一个很好的选择。
如果出现以下情况,请使用Breeze:
- 您只需要一个更为新的并想替换laravel/ui。
- 您想快速修改应用程序的身份验证功能。
- 您正在从头开始构建一个不需要Fortify或Jetstream提供的功能的应用程序。