前言
前端mvvm框架好多,这个概念大家都知道是由后端开发那边传过来的。后端开发最开始是比较经典的MVC框架,当然前端也有MVC框架,比如比较经典的backbone.js就是比较经典的前端MVC框架(都好几年没更新了,估计没啥用户了),后面微软在其前端应用上首次提出了mvvm框架,再到后来我们当前最热的前端框架Vue.js。在这系统的文章中,我们不会由复杂的vue.js着手来学习,我们先由简单的概念开始,一步一个demo来学习前端mvvm到底是什么鬼?
传统的前端开发方式
传统的前端开发思路是jQuery一招鲜,使用jQuery可以直接去修改Dom节点内容,Dom节点操作优先。如果需要更新某些节点,直接去使用其强大的选择器修改就是了,如下面的demo:
See the Pen jQuery Dom by Nelson Kuang (@nelsonkuang) on CodePen
1
html代码如下:
js代码如下:
使用MVVM框架的开发方式
使用mvvm的方式如何呢?其开发思路与传统的Dom节点优先不一样,mvvm操作是数据驱动,数据操作优先,即繁琐的Dom节点操作早已被封装好到ViewModel里面,我们只需关注于数据层Model的操作层面。如下面Demo – 我们来实现一个最简单的前端mvvm框架:
See the Pen MVVM WAY by Nelson Kuang (@nelsonkuang) on CodePen
1
View层代码如下:
Model层代码如下 :
ViewModel层代码如下,给数据绑定事件的方式除了Object.defineProperty其实还可以用Es5中的get/set关键字,这里我们先用Object.defineProperty来做Demo:
如下面代码,现在尝试更新Model层数据,View层应该就可以自动更新了。
结束语
对比了上面的传统的jQuery的方式来开发与MVVM方式来开发的Demo,相信大家对前端开发方式的转变有了更好的理解,为什么要这样搞呢,因为传统的频繁操作Dom节点的开发方式搞小一点的项目还可以,但当项目复杂度高一点点的话,就会出现一系列的问题,如频繁操作Dom严重影响页面性能,代码管理混乱及难以维护等。下一节我们将更加深入一点点来完善上面的Demo。