MVVM由三部分组成
- View:界面
- Model:数据模型
- ViewModel:作为桥梁负责沟通 View 和 Model
在MVVM中,UI通过数据驱动,数据改变就会刷新相应的UI,UI改变也会改变相应的数据
ViewModel只关心数据和业务的处理,View和Model相互独立,ViewModel可放置一些可复用的逻辑
-
脏数据检测
当触发指定事件之后,进入到脏数据检测,调用$digest
循环遍历所有的数据观察者,判断当前值是否和先前的值有区别,若有变化则调用$watch
函数,然后再次调用$digest
循环遍历直至没有发现变化。
特点:可以批量检测出更新的值,再统一更新UI,减少DOM操作次数 -
数据劫持
Vue内部使用Object.defineProperty()
实现双向绑定,监听set
和get
事件 -
Proxy 与 Object.defineProperty 对比
Object.defineProperty
(1)只能对属性进行数据劫持,需要深度遍历整个对象
(2) 数组不能监听数据的变化
Proxy
原生支持监听数组变化,并且可以对整个对象进行拦截 -
路由原理
监听url的变化,然后匹配路由规则,显示相应的页面,并且无须刷新
hash模式
www.test.com/##/
就是hash url,当##
后面的哈希值发生变化时,不会向服务器请求数据,可以通过hashchange
事件监听url变化,从而进行跳转页面。
history模式
html5新推出的功能