MVC
M:Model 数据模型
V:View 界面视图
C:controller 逻辑

互动的模式
一般分为两种,1.通过view接受指令,传递给controller。然后controller控制model影响view。

第二种,controller接受指令后,控制model并修改view

具体可查看阮老师的博客 MVC,MVP 和 MVVM 的图示 - 阮一峰的网络日志
MVVM
V:view 界面
M:model 数据模型,和我们的业务需求或业务实体是一 一映射关系。
VM:viewmodel 沟通 view 和model。

单向绑定/双向绑定
单向绑定:指的是ViewModel改变会影响到View的改变,例如 ViewModel中操作的数据由true变为false。那么View中绑定这个数据的元素就会执行相应的操作。
双向绑定:单向绑定基础上增加了View影响到ViewModel的改变。例如View中一个input输入框,输入内容后,ViewModel中就会改变相应的数据。最简单的例子就是vue中 v-model 语法。
这里讲的挺详细的,请移步 什么是 MVVM 模式? - 简书
MVVM框架中,就核心的就是数据的双向绑定,其中有angluar的脏数据检测和vue中的数据劫持。
脏数据检测
当指定事件触发后进入脏数据检测,会调用 $digest 循环遍历所有数据,判断当前值和先前值是否相同,如果不一致,就会调用 $watch 函数,然后再调用 $digest 循环直到发现没有变化。循环至少为2次,至多为十次。
优点:1.检查所有数据,直到没有更新,再去统一UI,减少操作dom次数。
缺点:1.需要检查所有数据,进行对比,会比较消耗性能。
数据劫持
Vue 只要利用了 Object.defineProperty()实现双向绑定,通过这个函数监听 Object的set和get事件,然后通过观察者,发布订阅模式修改。
两者的对比
来自 vue官方,说的比较客观,主要看双向绑定那里。对比其他框架 — Vue.js
路由原理
前端路由的前生今世及实现原理 - FE-杂货铺 - SegmentFault 思否 这里有个详细的
前端路由实现起来其实很简单,本质就是监听 URL 的变化,然后匹配路由规则,显示相应的页面,并且无须刷新。目前单页面使用的路由就只有两种实现方式
1.hash 模式
2.history 模式
www.test.com/#/ 就是 Hash URL,当 # 后面的哈希值发生变化时,不会向服务器请求数据,可以通过 hashchange 事件来监听到 URL 的变化,从而进行跳转页面。

Virtual Dom 虚拟DOM
操作DOM是一件非常耗费性能的事情,但是操作一个JS对象性能就会好的多。可以通过操作js对象,把与数据给整理出来,然后再用这个数据去渲染界面,这样性能就好的多。
Virtual Dom 算法描述
可以通过js来模拟实现dom,剩下的问题,就是这么判断新数据和旧数据的差异。请移步 框架通识 | InterviewMap
Virtual Dom算法的实现,就是三步
1.通过js来模拟创建DOM对象。2.判断两个对象的差异。
3.渲染差异。
网友评论