[color=#ffffff]空格[/color]前端技术的出现是为了将DOM的交互操作从整个WEB站点开发中独立出来,进而进行更加高效的管理 。随着AJAX技术的出现,前端页面上的用户操作越来越多,越来越复杂,以前的很多用户请求都可以通过AJAX无刷新的操作来完成。
通常AJAX的流程为:用户使用XMLHTTPRequest创建HTTP请求来获取服务端的数据或一段HTML结构内容,请求成功后在页面上进行增加、修改、删除DOM元素的操作。
到目前为止,这种操作经历了3个阶段:
第1阶段:原生及jQuery阶段。用原生手段获取并操作DOM过于复杂,于是jQuery诞生了。
第2阶段:MV\*阶段。随着AJAX技术盛行、SPA广泛应用,每次数据请求后进行数据渲染和事件绑定,用户操作后进行另一部分数据的请求和事件绑定,后面以此类推,最终代码会乱成一锅粥,于是MV\*诞生了。它将页面上与DOM相关的内容,抽象成:数据模型(Model即M)、视图(View即V)、事件控制函数(Controller即C,或Presenter即P,或ViewModel即VM)。(1)MVC,C监听V的变化,C手动改变V。(2)MVP,V触发P的动作,P手动改变V。(3)MVVM,V触发VM的动作,VM自动改变V。代表框架为Angular.js。
第3阶段:Virtual DOM阶段。在MV\*里,一个DOM的改变将会导致大量重复渲染,于是Virtual DOM诞生了。用Virtual DOM控制页面DOM结构更新的过程:创建原始(页面或组件)的Virtual DOM,用户更新DOM后创建新的Virtual DOM,对比两个Virtual DOM,把Virtual DOM的变化部分添加到DOM树上,最后渲染到页面上。代表框架为React.js,在React.js中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,即Virtual DOM。