【发布时间】:2019-02-16 01:20:40
【问题描述】:
我一直在学习如何使用 Laravel 和 Vue.js 构建 Web 应用程序,并且我了解用户使用视图向控制器发送请求的部分,然后控制器操作模型。我绝对在我的应用程序中看到了这种流程。
我不太确定的是为什么在像这样的 MVC 图中:MVC pattern diagram from Wikipedia。模型直接更新视图,但在我的应用程序中,控制器似乎是从模型获取更改并将其发送到视图(通过 HTTP)的控制器。
有什么我不太明白的地方吗?
【问题讨论】:
-
关于"...用户使用视图来发送请求...":否。您正在使用浏览器,而不是任何视图。您只是在“使”浏览器向服务器发送请求(通过键入 URL 并按 Enter,或通过触发 ajax 请求,或通过单击 submit按钮等)。然后由控制器处理任何此类请求。而且,相对于控制器,浏览器是用户,而不是你。
-
@dakis 哦,这就是为什么图表说用户正在“使用”控制器并“看到”视图的原因。确实花了很长时间才得到你写的东西,但它完全值得一遍又一遍地阅读。
-
是的,就是这样。请注意三点: 1)MVC中的“V”就是所谓的表示层。它可以是 view 类,但也可以由 presenter 和 view 类等组成。 2) 模型,例如MVC 中的“M”是一个层。并由多个特定类组成:实体、数据映射器、存储库、服务。 3)图表混乱。在 Web MVC 中,模型不会更新任何视图! 模型应该对外部世界一无所知。
-
改为:(a) 控制器更新 model 然后从中读取数据,以便进一步将其传递给 view 进行显示它;或 (b) 控制器更新 模型。 view 然后读取 数据并显示它。应该选择 (b) 选项,即使框架正在使用选项 (a)。
标签: model-view-controller design-patterns