我正在阅读某人的代码,我遇到了Knockout和MVVM。我对这两个主题做了一些阅读,但我仍然对它们真正解决的问题感到困惑,很可能是因为我没有构建足够大的应用程序来解决这个框架/架构解决的问题。
我花了一些时间来理解这个示例代码 - http://knockoutjs.com/img/homepage-example.png - 来自Knockout主页。我希望有人可以向我解释一下如果没有使用Knockout,相同的代码是什么样的,以及这可能会有什么问题。
(对于这个问题,SO可能不是正确的平台,所以如果有其他更合适的Exchange,请告诉我。)
谢谢!
答案 0 :(得分:2)
从10,000英尺
Knockout提供了用HTML编写的 view 与用JavaScript编写的 viewmodel 上的相应属性和函数之间的双向数据绑定。
想象一下,您有一个名为 contacts.html 的HTML视图和一个名为 contacts.js 的JavaScript视图模型。这两个一起构成一个模块,而Knockout将成为将它们联系在一起的粘合剂。
MVVM代表Model View ViewModel。我在上面讨论了后两个问题。 模型只是您世界某个角落的JavaScript表示,例如,在这种情况下,联系。
因此,综合以上内容,我们可能会(在目录结构方面):
您可以在viewmodel中实例化模型,然后使用Knockout将视图绑定到viewmodel。
MVVM简单地提供了一种分离关注点和最大化重用的好方法。作为重用的示例,您可以将联系人视图绑定到许多不同的联系人视图模型,具体取决于上下文。上下文可以是客户端设备的大小,用户的授权配置文件,"社区"与"溢价"您的应用程序的版本,等等。
通过改进修改MVVM的任何组件都可以相对隔离地完成,而不会对整个应用程序产生负面影响。因此,分离问题的价值。
这有意义吗?