例如,这适用于模型:
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/作为引导我的参考资料。
答案 0 :(得分:1)
简短回答:是的。它只是代码。
答案很长:不,那不是MVC的设计方式。 MVC专门用于将逻辑与视图分开。事实上,在.NET中,数据层通常是一个完全独立的类库,它只是由前端引用。服务器和客户端设计为分开,以保持后端和前端彼此远离。
我知道您可能已经知道以下内容,但我想重申并澄清一下:MVC代表模型,视图,控制器(显然),但这是每个人所做的:
模型:模型可以被认为是您的平均类。它包含与特定对象相关的结构和功能,以及模型的CRUD(大多数时候实际模型和CRUD也是分开的,但非常紧密地联系和相关)。模型是您的应用程序用于理解如何进行通信,计算和构建的模型。
查看:视图是客户看到的内容。它是实际的网页,实际的前端。理想情况下(虽然不切实际),它不包含任何逻辑。大多数时候这里有一些逻辑(主要是JavaScript逻辑,有时也可以嵌入服务器逻辑来创建动态用户体验)。这是您的HTML,CSS和(客户端)JavaScript所在的地方。
控制器:这是模型和视图之间的联络人。它接受来自客户端的请求,将其发送给Model,然后Model返回构造的模型。然后,Controller执行任何必要的计算,并将模型传递给视图。 Controller基本上将模型描述为视图 - 它解释了实体如何相互作用和相互关联。
这样想: 我有一个名为ApplicationUser的模型和一个名为ApplicationUserCRUD的CRUD类。客户端登录到我的站点(View Layer),该站点向Controller发送请求。 Controller接受他们的请求(在这种情况下,让我们说请求是他们的用户名和密码),并将其传递给CRUD(控制器层)。然后CRUD检查用户是否存在,以及密码是否匹配(模型层)。然后,当它确认后,它会将信息发送给模型。然后,Model返回到Controller,后者将其传递给View以构建View。
如果您尝试在模型中执行逻辑和计算,则表示您未正确使用MVC。逻辑和计算在Controller中执行,有时是视图,在某些情况下是Helper类。
Helper类是一个与特定区域/视图无关的控制器。
此外,CRUD通常称为DAL或数据访问层。它是另一个与模型层基本平行的层,但包含与服务器/数据库交互的逻辑。我提到这一点是为了证明人们不喜欢在模型中添加逻辑 - 以至于他们创建了一个全新的层来保存逻辑。
希望这有帮助!