Model View ViewModel / Knockout解决了什么?

时间:2014-03-20 01:01:01

标签: mvvm knockout.js

我正在阅读某人的代码,我遇到了Knockout和MVVM。我对这两个主题做了一些阅读,但我仍然对它们真正解决的问题感到困惑,很可能是因为我没有构建足够大的应用程序来解决这个框架/架构解决的问题。

我花了一些时间来理解这个示例代码 - http://knockoutjs.com/img/homepage-example.png - 来自Knockout主页。我希望有人可以向我解释一下如果没有使用Knockout,相同的代码是什么样的,以及这可能会有什么问题。

(对于这个问题,SO可能不是正确的平台,所以如果有其他更合适的Exchange,请告诉我。)

谢谢!

1 个答案:

答案 0 :(得分:2)

从10,000英尺

Knockout提供了用HTML编写的 view 与用JavaScript编写的 viewmodel 上的相应属性和函数之间的双向数据绑定。

想象一下,您有一个名为 contacts.html 的HTML视图和一个名为 contacts.js 的JavaScript视图模型。这两个一起构成一个模块,而Knockout将成为将它们联系在一起的粘合剂。

MVVM代表Model View ViewModel。我在上面讨论了后两个问题。 模型只是您世界某个角落的JavaScript表示,例如,在这种情况下,联系

因此,综合以上内容,我们可能会(在目录结构方面):

  • 模型\ contact.js
  • 视图\ contact.html
  • 的ViewModels \ contact.js

您可以在viewmodel中实例化模型,然后使用Knockout将视图绑定到viewmodel。

MVVM简单地提供了一种分离关注点和最大化重用的好方法。作为重用的示例,您可以将联系人视图绑定到许多不同的联系人视图模型,具体取决于上下文。上下文可以是客户端设备的大小,用户的授权配置文件,"社区"与"溢价"您的应用程序的版本,等等。

通过改进修改MVVM的任何组件都可以相对隔离地完成,而不会对整个应用程序产生负面影响。因此,分离问题的价值。

这有意义吗?