Laravel Livewire:组件还是控制器?

Laravel Livewire: Components or Controllers?

我正在学习使用 Livewire,我发现我可以使用像控制器这样的组件,到目前为止,我已经能够管理视图、数据,并使用组件内部的路由模型绑定进行一些 CRUD 操作。

我应该使用组件而不是控制器吗?还是我应该继续使用控制器并将组件仅用于前端?

最佳做法是什么?

这完全取决于您在构建应用程序时感觉如何。这两种方式都不是最佳实践,但您可能会欣赏随处使用组件的一致性。

我见过一些 Livewire 应用程序采用最小化方法,只是将 Livewire 组件嵌套在他们的标准 controller-driven 应用程序中。如果您正在将现有应用程序简化为 Livewire,这是完美的,因为它允许您一次转换它的一部分。但是,如果我从头开始构建应用程序,我不会采用这种方法。

我宁愿完全放弃控制器。我喜欢拥有一个完整的 Livewire 组件层次结构来代表我的应用程序,我的页面组件处于初级级别,然后是同名目录中的任何嵌套组件。让我们举个例子-

app/Http/Livewire
- Account.php                   < Account page component
- Account                       < Account page nested components directory
  - UpdateNameForm.php          < Nested update name component
  - UpdatePasswordForm.php      < Nested update password component
  - DeleteForm.php              < Nested account deletion component
- Dashboard.php                 < Dashboard page component

对我来说,我的一些页面组件是否是静态的真的无关紧要。与控制器相比,使用 Livewire 渲染视图并没有任何显着的性能开销。您确切地知道在哪里寻找您的大量应用程序逻辑,而无需深入查看页面是否是动态的。您还可以从 Livewire 提供的一些有用的功能中受益,例如使用类型化组件 属性 的路由模型绑定。如果您遵循默认的文件命名约定,您甚至可以删除组件的 render() 方法。