首页 > 代码库 > 小说mvvm
小说mvvm
伴随着前端的多样化和复杂化,设计模型不再是后端的专有名词,从最初的面向对象,到如今框架引出的mvc等,今天主要讲的却是Model-View-ViewModel(MVVM)。
对于mvc大家可能都会相对的很熟悉,而mvvm估计陌生的居多,在我们web实际开发中用户的输入等行为必须通过监听窗口、文档和元素上的事件来获得而这些东西常常被认为是View,而按照mvc模式这部分却是不应该在view层,而是Controller处理,Controller应该是View操作Model的中介,所以在web中mvc模式很难被使用,而这时mvvm应运而生,它只需要一个为view量身定制的model,这个model就是viewmodel。viewmodel包含所有由UI特定的接口和属性,并由一个viewmodel的视图的绑定属性,获得二者之间的松散耦合,同时在viewmodel直接更新视图中编写相应代码。这样viewmodel具备良好的伸缩性,在小型应用中也可带来不菲的好处。它还易于在最终的应用程序中利用开始构建的原型系统,使得异步编程变得简单,所以也成为了web应用中如今的主流框架模式,也是如今面试会问到到题目之一。
看了上面大家对mvvm大致应该有了些印象,在我们实际开发中,正是由于用户界面的复杂化,用户界面在不同逻辑下包含多种状态,同时用户界面通常需要和业务组件协作实时的同步数据,应对这样的需求mvvm也就更加的重要,它把应用程序的状态和行为进行封装,隔离了用户界面和用户的体验部分,model用来做数据访问层,view则独立于model,而viewmodel则负责它们两者间信息的转化,同时对model层进行crud操作及view层提供数据绑定,这种模式也方便相同功能不同逻辑的页面模块的复用,对于后期维护也是省事了不少,而且在相信大家最常见的场景就是模块数据变化时,页面上有多块dom需要做对应的状态变化,这时用它更加能把大家从dom操作和查找中解放出来。
不过这个模式并不是所有的项目都是适用的,设计模式也是要看使用场景,比如简单的UI那用它就是反而杀鸡用牛刀,照成多余的性能耗损,毕竟viewmodel和view之间的解析是必不可少的,总之一句话灵活应用合适的东西用在合适的地方给别人说的在烂的模式也是好用的,另外关于mvvm的框架大家可以看看Knockout、avalon、angular等。