【问题标题】:Laravel app with one or multiple Vue instances具有一个或多个 Vue 实例的 Laravel 应用
【发布时间】:2019-07-06 16:33:46
【问题描述】:

免责声明:这不完全是一个编程问题,我在征求您的意见。如果这篇文章不属于这里,请告诉我,我会删除它。

我正在使用 Laravel 和 VueJS 计划一个相当大的应用程序。我的主要问题是最好的方法是什么?

该应用将涉及用户注册、登录、不同的用户角色和权限、个人资料页面等。

使用 Laravel 路由器加载页面并为每个页面创建多个 Vue 实例是个好主意吗?即让一个 Vue 实例处理首页,让另一个 Vue 实例处理个人资料页面等?

还是创建一个包含多个组件的 Vue 实例并纯粹使用 Laravel 作为 API 服务器更好?

您是否有任何教程或资源可以帮助我决定一种方法或另一种方法?

如果您对此发表看法,我将不胜感激。

感谢您的阅读:)

===== 更新

感谢您的回复和您为此花费的时间。我有另一个问题。假设我决定使用 MPA,并且我有 1 个 Vue 应用程序来处理一个页面,是否可以为每个页面使用 Vue 路由器?例如 '/profile 页面将由 laravel 渲染 /profile 之后的所有内容都应该由 Vue 处理'

现在如果我想让 VueJS 处理路由,我把它放在 web.php 中

Route::get('/{any?}', function () {
    return view('vueentrypoint');
})->where('any', '[\/\w\.-]*');

我可以做类似的事情

Route::get('/profile/{any?}', function () {
    return view('profileentry');
})->where('any', '[\/\w\.-]*');

Route::get('/user/{any?}', function () {
    return view('userentry');
})->where('any', '[\/\w\.-]*');

【问题讨论】:

  • 创建一个包含多个组件的 Vue 应用程序当然更好,您可以使用 laravel 附带的内置 vue.js 来做到这一点,方法是使用 vue 路由器并告诉 laravel 继承 vue 路由器配置.
  • 谢谢你,凯尔,我也会阅读链接:)
  • 您基本上是在询问您是否应该构建一个 Vue SPA 或 MPA(多页应用程序),并使用 Laravel 提供视图。这里没有正确答案,这取决于您的项目要求。两者都有成功的实现..
  • "...这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。"

标签: laravel vue.js


【解决方案1】:

如果您需要在一个 Laravel 实例中使用多个,您应该将具有多个 Vue 实例的应用程序分开。例如,您有一个电子商务 Web 应用程序,并且您有三个区域,它们是;

  • 客户仪表板:客户信息、愿望清单、送货信息、购买的物品、帮助票等。
  • 电子商务网站:首页、分类、列表、商品评论和购买商品
  • 工人仪表板:系统更新、新项目、新类别、新列表、帮助工单视图等。

注意:也许客户仪表板和电子商务应用程序可以合二为一,但我喜欢将客户仪表板与一切分开。

三个应用程序可以用三个 Vue 实例分开。最好只为一页创建新的 Vue 实例。

Route::get('/w/{any?}', 'SpaController@worker')->where('any', '.*')->name('spa.worker');
Route::get('/c/{any?}', 'SpaController@customer')->where('any', '.*')->name('spa.customer');
Route::get('{any}', 'SpaController@website')->where('any', '.*')->name('spa.website');

【讨论】:

  • 嗨@Mahodroid,你能分享一下 spa.worker 和 spa.customer 文件的实现或代码吗?
  • 名称只是路由的标题,它们是 SpaController 方法的路由。该方法返回具有特定 vue 实例的主刀片视图。 public function worker() { return view('worker.app'); }
猜你喜欢
  • 2017-11-13
  • 2018-09-09
  • 2021-02-06
  • 2020-01-02
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 2014-01-26
  • 2017-06-12
相关资源
最近更新 更多