javascript - Ajax 架构 - MVC?其他?

标签 javascript jquery model-view-controller architecture

大家好,我正在考虑构建一个 ajax 密集型站点,并且我正尝试花一些时间预先考虑架构。

我正在使用 Code Igniter 和 jquery。我最初的想法是弄清楚如何在 javascript 端复制 MVC,但似乎 M 和 C 并没有太多用武之地。

很多 JS 都是 ajax 调用,但我可以看到它的发展超出了这一点,有大量的 DOM 操作,以及探索 HTML5 客户端数据库。我应该如何考虑构建这些文件?追求 MVC 有意义吗?我应该以某种方式去 jquery 插件路线吗?我不知道如何进行,我希望得到一些提示。谢谢大家!

最佳答案

我制作了一个 MVC 风格的 Javascript 程序。完成 M 和 C。也许我走错了一步,但我最终编写了自己的事件调度程序库。我确保不同层仅使用可以转换为纯 JSON 对象的消息协议(protocol)进行通信(即使我实际上并没有执行该转换步骤)。

所以 jquery 主要存在于 MVC 架构的 V 部分。在 M 和 C 端,我的主要代码可以在 spidermonkey 的独立 CLI 版本中运行,或者在必要时在 javascript 的服务器端 rhino 实现中运行。这样,如果以后需求发生变化,我可以让我的 M 和 C 层在服务器端运行,通过这些 json 消息与浏览器中的 V 端进行通信。不过,只需要对我的消息调度程序进行一些修改即可更改此设置。将来,如果浏览器获得一些点对点风格的技术,例如我可以让不同的层在不同的浏览器中运行。

但是,目前,所有三个层都在一个浏览器中运行。我编写的事件调度程序允许多播消息,因此现在实现撤消功能就像创建一个新对象一样简单,该对象只监听需要撤消的消息。将状态自动保存到服务器是一个类似的操作。我能够在事件调度程序中进行全面详细的调试和分析。我能够准确定义代码的运行方式,以及运行的速度、时间和地点,所有这些都来自代码的核心部分。

当然,我遇到的主要缺点是我没有很好地管理事情的复杂性。为此,如果我要重来,我会非常非常仔细地研究“功能 react ”范式。在 javascript 中有一种现成的范例实现,称为 flapjax。如果不专门使用 flapjax 库,我会确保 View 层遵循该执行模型。 (我不确定 flapjax 本身是否很好地执行了这个想法,但这个想法本身很重要)。

功能 react 的另一个重要实现是 quartz composer,它随苹果的开发者工具免费提供(购买任何 mac 时免费)。如果您可以使用它,请仔细查看它及其工作原理。 (它甚至有一个 javascript 补丁,因此您可以使用预构建的 View 层对您的应用程序进行原型(prototype)设计)

函数式响应式范例的主要收获是确保 View 似乎不会保持任何类型的状态,除了您刚刚给它显示的状态。更具体地说,我从“向屏幕添加一个对象”“从屏幕中删除一个对象”类型的消息开始,现在我更倾向于“显示这个对象列表,我会让您找出从当前显示到我现在要您显示的内容的最有效方法”。这消除了一大堆与草率管理状态有关的错误。

这也解决了我一直遇到的另一个问题,即消息以错误的顺序到达导致的错误。这是一个需要解决的大问题,但您可以通过发送一个大包来绕过它,只需发送一个包含最终所需状态的大包,而不是通过一系列步骤到达那里。

不管怎样,这是我的小吐槽。如果您对我的战时经历有任何其他问题,请告诉我。

关于javascript - Ajax 架构 - MVC?其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1216609/

相关文章:

jquery - JStree 1.0 创建新类型

php - Zend_Framework- 在哪里放置 $_GET 和 $_POST(HTTP 请求)处理?

html - Angular.js Controller 无法设置属性

javascript - 使用按钮在可见和隐藏之间切换

使用 SVG 中的外部对象创建文本区域的 Javascript 不起作用

javascript - 为什么 "\n"在 Javascript 中是一个数字 "NaN"

php - 如果浏览器是 IE,则更改文件扩展名

javascript - 如何在 Angular JS 中使用数组?

javascript - 如何验证引导单选按钮

javascript - Backbone.js View 的适当粒度是多少?