【问题标题】:Implementing 1-page JavaScript web app using the principles of MVC使用 MVC 原理实现一页 JavaScript Web 应用程序
【发布时间】:2011-05-20 13:06:39
【问题描述】:

您将如何使用 MVC 原理在 JavaScript 中实现这个应用程序?

如您所见,该应用程序基本上有 3 个视图:“侧边栏”、“可视化”和“时间滑块”。基础模型必须跟踪选定的国家和年份。

在初始化应用程序时,它应该加载一个 json 文件,该文件用数据填充模型。使用某种事件系统(请指教),应通知控制器稳定模型,并设置相应的视图。

例如,在侧边栏中添加国家应触发数据重新加载,然后更新可视化视图的 x/y 比例以适应更多国家等。

您将如何将逻辑与视图分开(模型、视图和控制器分别包含哪些内容)以及您将使用哪些库? (尤其是关于事件处理)。

非常感谢代码...谢谢。

【问题讨论】:

标签: javascript jquery model-view-controller web-applications state-management


【解决方案1】:

对于此类应用,我建议您查看backbone.js

基本上是:

Backbone 提供结构到 JavaScript 繁重的应用程序 为模型提供键值 绑定和自定义事件、集合 具有丰富的可枚举 API 具有声明性的函数、视图 事件处理,并将其全部连接到 您现有的应用程序 RESTful JSON 接口。

您可以在backbone.js 文档中查看Views;他们为您提供了大量示例,这比我使用backbone.js 提供完整的解决方案更有帮助。他们还提供了几个演示,其中包含完整构建的应用程序供您使用。

更新:还可以查看spine.js,它与backbone 非常相似,但不一样,从他们的 F.A.Q 来看,区别在于:

哇——你的 API 看起来很像 Backbone。为什么我应该使用它呢?

嗯,Spine 是真的 灵感来自 Backbone,一个优秀的 库,它的控制器 API 是 非常相似。然而 相似之处到此为止。在内部 图书馆的工作方式非常不同。为了 例如,Spine 不需要 集合,这是必需的 Backbone 中的几乎所有模型。 Spine 提供了一个类库,并且 有非常不同的想法 到服务器同步。最后,Spine 很多 更简单,尺寸只有一半,去吧 查看源代码。

【讨论】:

  • spine!这就像骨干,但不是骨干!
  • 我查看了 Backbone,但它似乎提供了比此类应用程序所需的更多开销。例如,“路线”在尝试使用 30 个变量来跟踪状态时并没有提供太多好处——或者我错过了什么?相反,我想要一些关于使用简单的事件系统和明确划分为模型、视图/s 和控制器来滚动我自己的基本 MVC 的输入。如果您仍然认为 Backbone 是要走的路,请为上面的项目提供一些示例代码,我会将问题标记为已回答:) 谢谢
  • @dani 骨干/脊椎几乎是最小的。重新发明轮子没有意义,您不需要全部使用。
  • @Raynos 点已被采纳!我也会看看 Spine :) 它主要是事件绑定和模型 => 哈希状态序列化,我不想重新发明自己。我想上述框架中实现的继承/类系统也是经过深思熟虑的吧?
  • @Raynso +1。重新发明轮子不是这种情况的解决方案。
猜你喜欢
  • 2014-11-07
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
相关资源
最近更新 更多