0

我正在大规模开发application。最初我的方法很困惑,即使我从一月份开始开发,我也是javascript的初学者。我正在寻找一种mvc方法,并找到了一些指导方针,例如:

模型:包含AJAX调用和服务

控制器例如 jQuery小部件等

视图例如HTML 的渲染等等..

我真的不清楚如何javascript完全按照上述三个建议来构建应用程序。我可以做任何事情,我可以管理template我可以写jQuery操作,我可以AJAX打电话。

我不清楚的是如何真正划分这三个模块。当我尝试这种方法时,我无法module只做它必须做的事情。

我还尝试了一种MV*方法,根据我所看到的和我的需要,这可能是一种更好的方法,因为我必须在客户端做bind大量的divs ,生成events ,只dataserver侧面接收。

我想知道的:

每个人的真正能力是Module什么?例如,如果我必须binda click eventto a button ,我必须在哪里写

.on('click',callback)

方法?我必须在哪里写callback他会打电话?

我写道:没有框架,因为我确信如果我不理解从头开始编写它的方法,那么我将完全理解完整框架的使用。

我希望我的疑问很清楚,如果没有,请发表评论,如果可以的话,我会尽力解释得更好。无论如何,对不起我的英语。

4

2 回答 2

6

这不是一个答案,因为没有一个答案。我只想提一些注意事项。

  • 将纯数据存储在模型中。将其视为业务对象而不是显示对象。例如,货币应该以数字的形式存储在模型中,可能在小数点后加上一些数字,再加上它是什么货币的指示符,如果这很重要的话。不要将数字存储为带有本地选择字符的字符串,以将 1000 和整数部分与小数部分和小数点后的正确位数分开。
  • 请务必将单击事件(和类似的用户操作)的处理程序代码放在控制器中。
  • 务必将导致屏幕更新的代码放在加载或控制器中的任何外部事件上。(外部事件可能是由于证券交易所数据而导致的股票价格更新或进入应用程序的天气报告的更新。)
  • 务必将 HTML 或生成 HTML 的代码作为视图的一部分。
  • 让控制器调用视图以在正确的时间更新/更改显示。
  • 让控制器或视图调用模型以获取当前模型数据值或更新当前模型数据。(参见下面类似的“不要”。)
  • 一定要减少三个部分之间的联系——M、V 和 C。明确定义谁可以出于什么目的与谁交谈,并保持该规则的神圣性。如果您发现异常,则表明这些规则的全局存在问题。

还有一些东西

  • 不要将显示屏幕的代码加载到控制器中。这显然是一个观点问题。这意味着控制器必须以某种方式调用视图。
  • 不要随意地将 M、V 和 C 代码连接起来。例如,您可能会制定一个规则,即模型永远不会调用视图或控制器中的代码。
  • 不要让控制器和视图都与模型对话。

问题:

  • 连接事件处理程序的代码在哪里?
  • 您将“业务逻辑”放在哪里?这是知道应用程序规则的代码。例如,验证是业务逻辑。某些代码可能需要知道邮政编码如何查找美国以及英国或加拿大的邮政编码。如果验证失败,控制器会告诉视图显示错误消息或红色标记或振动框等。验证规则的业务逻辑是否也在控制器中?
  • 从外部数据源加载数据的代码在哪里?(服务器、JSON Web 服务、数据库、屏幕抓取等)您可能会想到“模型”,但是当新数据返回时,模型必须调用控制器来告诉它更新视图。这似乎不对。
  • 同样,处理相当于“提交”按钮的代码是什么,移动到另一个屏幕。
  • 如果将数据从可在屏幕上显示的表单转换为纯数据表单太慢,您会怎么做?
  • 屏幕的某些部分总是可以用他们自己的 MV&C 构建。您如何设置多个小 MVC 和作为整个屏幕的大 MVC 之间的交互?那些小家伙是大 MVC 的观点吗?还是控制器?他们可以同时是两个吗?是否存在包含小模型的大模型,或者数据在小模型和大模型之间流动?谁知道这一切?
  • 是否有更大的 MVC 由多个屏幕组成?如果它存在,它可能会在服务器上。
  • 你如何处理“合成”事件?这类似于当数据正常但现在处于错误状态(或不完整但现在已完成)时发生的“事件”。此事件的侦听器可以禁用“提交”按钮并显示错误消息或动画来提醒用户注意问题。它可以是任何不是内置于框架或语言中的通用事件。也许它向服务器发送了一条消息,表明多人游戏的世界观状态发生了变化。

这只是您在编写自己的 MVC 或评估现有框架时会想到的一些事情的列表。

于 2013-07-19T19:13:25.410 回答
2

在特定框架之外没有明确的答案。尽管每个人(几乎)都清楚 MVC 模式的一般职责,但每个框架都有自己的解释来准确地解释在每一层中放置哪些代码——一些框架甚至跳过一些层,或者添加不同的层。

我知道您不想使用框架,但仍然值得了解当前解决方案的工作原理,因此如果您喜欢它们的工作方式或者您更喜欢自己推出解决方案,您可以做出明智的决定.

我建议您至少看看一个服务器端 MVC 框架(例如 Ruby on Rails 或 Asp.Net MVC)和一些客户端 MVC 框架(Backbone.js、Angular.js 等 - 仅限 javascript)。阅读他们的文档,并从其他人做出(和测试)的选择中学习。站点todo mvc可以帮助您比较不同的客户端 MVC 框架,以找到您更喜欢的方法。

这不是一个简单的话题,从头开始讨论每种方法的优缺点可能需要很长时间。

于 2013-07-19T19:43:09.343 回答