对具有多个模型的 JS 应用程序使用 MVC 模式

Posted

技术标签:

【中文标题】对具有多个模型的 JS 应用程序使用 MVC 模式【英文标题】:Using MVC pattern for JS app with multiple models 【发布时间】:2021-03-26 18:20:52 【问题描述】:

在使用多个模型的情况下,我正在尝试理解 MVC 模式在 JS 应用程序中的用法。例如,我有一个包含用户信息、他的命令和命令执行者的页面。我需要显示一些用户信息并进行命令和执行者编辑。所以我有 3 个模型,每个模型都需要控制器和视图。除了命令和执行者在列表中。模型中连续使用的所有列表必须从服务器加载。我应该使用什么方法在一个页面中管理多个 MVC 实体?也许是其他设计模式等。

更新 澄清 但是,如果我需要制作一个单独的页面,我只处理订单或只处理执行者。这些应该是单独的实体是合乎逻辑的,以便它们可以用于各种任务。我认为,在这种情况下,也许有必要从“小”模型中组装一个“大”模型来解决特定问题,或者为模型之间的交互制作某种接口。 我在说什么?例如,当我从服务器加载订单时,我还加载了有关执行程序的一些信息,即在 SQL 数据库中,这是通过两个表的一些 JOIN 完成的。哪个模型请求加载?显然是命令。那么,如何初始化执行者模型数据呢?好的,我正在做一个大模型,其中包含我需要的关于我的应用程序中所有实体的所有数据。 好的,执行者编辑的页面(模态,无论如何)。不需要订单数据或客户(用户)数据。为此,我使用相同的模型,其中一些与它们相关的数据和函数将不会被使用。有些东西不适合我:)

【问题讨论】:

【参考方案1】:

只是一个更正,MVC 是architectural pattern 而不是设计模式。然而,两者之间的差别只有一条细线,因此在讨论过程中很容易错误地互换。

不管怎样,MVC 应该是构建代码的好方法:

- authentication [Feature1]
    - pages
       - signin_page.htm
       - authentication.css
       - signup_page.htm
    - models
       - user_info.js
       - signin_info.js
    - auth_controller.js
 - orders [Feature2]
    - pages
    - models
       - order_info.js
       - payment_info.js
    - order_controller.js
 - Feature3
 - Feature4
 - shared [all common things]
    - services
       - http_service.js
    - models
       - error_info.js

基本上,您可以为每个特性或功能创建一个文件夹,然后根据需要在其中创建文件夹,即页面/视图和模型,然后为每个特性创建一个或多个控制器和一个通用服务来执行 http 调用,这应该将参数和 url 作为输入,应该处理所有的错误处理。

【讨论】:

以上是关于对具有多个模型的 JS 应用程序使用 MVC 模式的主要内容,如果未能解决你的问题,请参考以下文章

为啥模型在MVC模式中直接更新视图?

javaweb之MVC设计模式

使用具有 3 层架构的 MVC 模式

使用mvc模式设计的web应用程序具有以下优点,除了?

JavaWebMVC设计模式

浅谈js中的MVC