Laravel Livewire:组件还是控制器?

Laravel Livewire:组件还是控制器?,laravel,laravel-livewire,Laravel,Laravel Livewire,我正在学习使用Livewire,我看到我可以使用像控制器这样的组件,到目前为止,我已经能够通过组件内部的路由模型绑定来管理视图、数据和进行一些CRUD操作 我应该使用组件而不是控制器吗?或者我应该继续使用控制器,只使用前端组件吗 哪一种是最佳实践?这完全取决于您在构建应用程序时的感受。这两种方法都不是最佳实践,但您可能会欣赏在任何地方使用组件的一致性 我见过一些Livewire应用程序采用最小的方法,只在其标准控制器驱动的应用程序中嵌套Livewire组件。如果您正在将现有应用程序简化为Live

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

我应该使用组件而不是控制器吗?或者我应该继续使用控制器,只使用前端组件吗


哪一种是最佳实践?

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

我见过一些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
app/Http/Livewire
-Account.php

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

特别是对于Livewire,组件类通常更好地使用,而不是控制器,但是使用控制器并没有错。Livewire的创建者Caleb意识到他已经有一年多没有编写过一个控制器了,因为Livewire允许他将它提取到组件的PHP类中。但最终,它有点固执己见——做最自然、最容易应用的事情。