mvc方法与javascript/jquery没有框架

ste*_*teo 0 javascript oop model-view-controller jquery

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

型号:包含AJAX呼叫和服务

控制器: 例如 jQuery小部件等

查看:例如 HTML的渲染等等.

我真的不清楚如何javascript完美地遵循以上三个建议来构建应用程序.我可以做任何事情,我可以管理template我可以写jQuery操作,我可以做AJAX电话.

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

我也尝试了一种MV*方法,对于我所看到的和我的需求,也许这是一种更好的方法,因为我必须做bind大量的divs,生成events,所有这些都是客户端,只dataserver侧面接收.

我想知道的是:

哪个是真正的能力Module?例如,如果我必须要binda click event到a button ,我必须在哪里写

.on('click',callback)
Run Code Online (Sandbox Code Playgroud)

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

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

我希望我的怀疑是明确的,如果没有,请发表评论,如果可以,我会尽力解释.对不起我的英语无论如何.

Lee*_*dor 6

这不是答案,因为没有一个答案.我只想提一些事情而不是.

  • 将纯数据存储在模型中.将其视为业务对象而不是显示对象.例如,货币应该作为数字存储在模型中,可能在小数点后面有一些数字,加上它是什么货币的指标,如果重要的话.不要将数字存储为具有本地字符选择的字符串,以将小数部分和整数部分与小数部分和小数点后的正确数字分开.
  • 在控制器中放置click事件(和类似的用户操作)的处理程序代码.
  • 在加载时或控制器中的任何外部事件上放置导致更新屏幕的代码.(由于证券交易所数据或进入应用程序的天气预报更新,外部事件可能类似于股票价格的更新.)
  • 将HTML或生成HTML的代码作为视图的一部分.
  • 让控制器调用视图以在正确的时间更新/更改显示.
  • 是否有控制器或视图调用模型以获取当前模型数据值或更新当前模型数据.(见下面类似的"不要".)
  • 确实减少三个部分之间的联系--M,V和C.明确定义谁可以与谁交谈以达到什么目的并使该规则保持神圣.如果你发现了一个例外,它的味道表明这些规则的大局有问题.

还有一些事情

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

问题:

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

这只是您编写自己的MVC或评估现有框架时要记住的事项列表.