【问题标题】:Can the model in MVC do calculations [closed]MVC中的模型可以进行计算吗?
【发布时间】:2018-05-30 01:10:50
【问题描述】:

例如这是否适合模型:

var Model = function Model(){
this.chapterIndex = 0;
this.pageIndex = 0;
this.next = true;
this.prev = false;
this.getCurrentpage = function getCurrentPage(){
    return chapterList[this.chapterIndex].pages[this.pageIndex];
};
this.getChapterPageLength = function getChapterPageLength(){
    return chapterList[this.chapterIndex].pages.length;
};
this.getTotalChapters = function getTotalChapters(){
    return chapterList.length;
};
this.canGoForwardInChapters = function canGoForwardInChapters(){
    return this.chapterIndex + 1 < this.getTotalChapters();
};

}

还是应该在控制器中处理 cangoForwardInChapters 之类的函数?

最佳做法是什么?

我阅读了 https://www.sitepoint.com/mvc-design-pattern-javascript/ 作为参考,引导我来到这里。

【问题讨论】:

  • StackOverflow 不是询问最佳实践的最佳场所。更多的是:“此代码不起作用,这是错误消息(或预期与实际行为)。我该如何解决?”我们更喜欢可以标记为正确的问题。最佳实践问题取决于个人喜好和您需要处理的其余代码,并且可能有多个不同但仍然“正确”的答案

标签: javascript model-view-controller model javascriptmvc


【解决方案1】:

简短的回答:是的。这只是代码。

长答案:不,这不是 MVC 的设计方式。 MVC 专门设计用于将逻辑与视图分离。事实上,在 .NET 中,数据层通常是一个完全独立的类库,仅由前端引用。服务器和客户端被设计成分开的,以保持后端和前端彼此远离。

我知道您可能已经知道以下内容,但我想重申和澄清:MVC 代表模型、视图、控制器(显然),但这是各自的作用:

模型:模型可以被认为是你的平均班级。它包含与特定对象相关的结构和功能,以及模型的 CRUD(大多数情况下,实际模型和 CRUD 也是分开的,但非常紧密地联系和相关)。模型是您的应用程序用来了解如何进行通信、计算和构造的工具。

视图:视图是客户看到的。它是实际的网页,实际的前端。理想情况下(尽管不切实际),它不包含任何逻辑。大多数时候这里有一些逻辑(主要是 JavaScript 逻辑,有时也可以在这里嵌入服务器逻辑以创建动态的用户体验)。这是您的 HTML、CSS 和(客户端)JavaScript 所在的位置。

Controller:这是模型和视图之间的联系。它接受来自客户端的请求,将其发送到模型,然后模型返回一个构造好的模型。然后控制器执行任何必要的计算,并将模型传递给视图。控制器本质上将模型描述为视图 - 它解释了实体如何交互和相互关联。

这样想: 我有一个名为 ApplicationUser 的模型和一个名为 ApplicationUserCRUD 的 CRUD 类。客户端登录到我的站点(视图层),该站点向我的控制器发送请求。控制器接受他们的请求(在这种情况下,假设请求是他们的用户名和密码),并将其传递给 CRUD(控制器层)。 CRUD 然后检查用户是否存在,以及密码是否匹配(模型层)。然后,当它被确认后,它将信息发送给模型。然后模型返回给控制器,控制器将其传递给视图以构造视图。

如果您尝试在模型中执行逻辑和计算,则说明您没有正确使用 MVC。逻辑和计算在 Controller 中执行,有时在 View 中执行,在某些情况下在 Helper 类中执行。

Helper 类是与特定区域/视图无关的控制器。

此外,CRUD 通常称为 DAL 或数据访问层。它是本质上与模型层平行的另一层,但包含与服务器/数据库交互的逻辑。我提到这一点是为了说明人们多么不喜欢向模型中添加逻辑——以至于他们创建了一个全新的层来保存逻辑。

希望这有帮助!

【讨论】:

  • 非常感谢您抽出宝贵时间。它让我明白了一些事情。
猜你喜欢
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 2015-09-22
相关资源
最近更新 更多