Laravel Livewire:组件还是控制器? [关闭]
Posted
技术标签:
【中文标题】Laravel Livewire:组件还是控制器? [关闭]【英文标题】:Laravel Livewire: Components or Controllers? [closed] 【发布时间】:2021-01-10 06:38:01 【问题描述】:我正在学习使用 Livewire,我发现我可以使用像控制器这样的组件,到目前为止,我已经能够管理视图、数据,并使用组件内部的路由模型绑定进行一些 CRUD 操作。
我应该使用组件而不是控制器吗?还是我应该继续使用控制器并将组件仅用于前端的东西?
最佳做法是什么?
【问题讨论】:
特别是对于 Livewire,组件类通常比控制器更好地使用,但使用控制器来代替也没有什么问题。 Livewire 的创建者 Caleb 意识到他已经一年多没有编写过一个控制器了,因为 Livewire 允许他将它提取到组件的 php 类中。但最终,它有点固执己见 - 为您的应用程序做最自然和最简单的事情。 【参考方案1】:这完全取决于您在构建应用程序时感觉如何。这两种方式都不是最佳实践,但您可能会欣赏在任何地方使用组件的一致性。
我见过一些 Livewire 应用程序,它们采用最小的方法,只是将 Livewire 组件嵌套在其标准控制器驱动的应用程序中。如果您将现有应用程序缓和到 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()
方法。
【讨论】:
以上是关于Laravel Livewire:组件还是控制器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Livewire:在选择输入的更改上传递选项值
Laravel Livewire,两个 livewire 组件之间的通信