为啥 Laravel 附带 Vue? (SPA 与 MVC)

Posted

技术标签:

【中文标题】为啥 Laravel 附带 Vue? (SPA 与 MVC)【英文标题】:Why does Laravel ship with Vue? (SPA vs MVC)为什么 Laravel 附带 Vue? (SPA 与 MVC) 【发布时间】:2017-07-19 13:40:04 【问题描述】:

我对为什么 Laravel 框架附带 Vue.js 感到有些困惑。

我的理解是 Laravel 是一个传统的 MVC 框架,而 Vue 将用于 SPA;这些都是不同的应用架构,那么它们如何一起使用呢?

我目前正在尝试弄清楚我的应用程序是否更适合传统与 SPA 的开发风格,而这是我正在努力解决的问题。

【问题讨论】:

【参考方案1】:

将 SPA 与 MVC 结合使用是一种常见的方法,因为它允许在应用程序中表达完整的服务器端逻辑,并在前端提供响应式的、类似于应用程序的用户界面。通常,这涉及使用 MVC 堆栈来管理 DB 并生成 JSON 响应,同时让整个 UI 存在于 SPA 中。

【讨论】:

感谢您的回答!我想可能是这样。作为我的问题的扩展,如果我们只使用 laravel 来管理数据库并生成 JSON,我们不应该使用更轻的东西,比如流明吗? Laravel 对于只会创建 API 的东西来说似乎很重。 如果不了解您的团队和经验的详细信息以及您对整个应用程序的需求,就很难回答这个问题。如果你觉得有必要使用更轻量级的方法,那么这是有道理的,如果你在 Laravel 中更舒服,那么它可能会很好。太多的评论线程虽然大声笑 这是一个公平的答案。我想我只需要尝试一下:) 为什么是流明?今天你做 SPA,明天你需要一些管理面板到同一个应用程序,还有什么?你会去为管理员做 SPA 吗?【参考方案2】:

通常 Vue 不仅仅用于 SPA。 MVC 架构依赖于客户端和服务器之间的紧密通信。每当您需要新数据或需要更改数据时,在 MVC 架构中,您基本上需要重新加载整个 html 页面,这将为您提供新的更新内容。

为了使事情更具交互性和用户友好性,有些人更喜欢使用 MVC 架构来交付初始内容,这基本上会为您呈现带有一些数据的 HTML 页面。之后,使用 javascript 库来防止每次您想要更改某些内容时重新加载页面。

【讨论】:

【参考方案3】:

MVC 和 SPA 并不是对立的。单页应用程序必须使用 API 端点,该端点可以(并且通常是)用 MVC 编写 - 请注意,“视图”不一定是 HTML 文档,它可以是表示应用程序处理的数据的任何内容,例如JSON。

【讨论】:

这是一个非常好的观点!我从没想过 JSON 实际上是视图层而不是整个 HTML 文档

以上是关于为啥 Laravel 附带 Vue? (SPA 与 MVC)的主要内容,如果未能解决你的问题,请参考以下文章

使用Laravel 和 Vue 构建一个简单的SPA

Laravel + Vue.js MPA/SPA 混合结构的建议和思考

使用 Laravel 后端部署 Vue SPA

Laravel 将 Auth 传递给 vue SPA

Laravel Vue SPA:如何从 Laravel 正确检索 json 对象并将其打印出来?

laravel 和 vue SPA 应用程序中的多个入口网络路由