在MVC中存储全局状态变量的位置以及如何传递它

Where to store global state variable in MVC and how to pass it around?

本文关键字:位置 何传递 变量 MVC 存储 全局 状态      更新时间:2023-09-26

请帮助我理解MVC架构的这一方面。

假设我的应用程序可以处于两种全局状态,视图模式编辑模式

1/该模式需要保存到后端,所以当应用程序再次加载时,它将处于相同的模式。

2/模式可以在主菜单中更改(这是我的视图代码的一部分)。

3/其他可视元素和模型功能取决于模式状态。某些东西在视图模式下是不可见的,保存的方式也会有所不同。

4/我的应用程序可以按需加载外部模块,这些模块在加载时需要知道模式状态以及它的进一步变化。

由于模块的松耦合,我认为最佳实践是在模式更改时调度事件。我的问题是:我从哪里调度它?变量实际定义在哪里?在模型?在视图?视图和模型代码如何访问这个变量?它是如何在模型和视图之间传递的?在这种情况下控制器的角色是什么?

注意:这并不重要,但我的代码是在JavaScript中,我还没有解决任何框架

不清楚您使用的是哪个平台,但我认为这些建议可能主要是与平台无关的。

首先,这听起来不像是一个真正的应用程序全局状态属性,而更像是一个用户或会话属性。

如果你想让你的应用保持"纯"无状态,这个编辑模式数据应该是你从前端发送和接收的模型/视图模型的一部分。然后,控制器可以读取并响应模式更改,并在将值发送到前端之前适当地修改值。而前端JS也可以根据需要读取和修改该值。

同样,标准会话也应该是可用的,可以使用,但当然,这打破了你的应用程序的"无状态"。