1、vue数据双向绑定
- 通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调
- 首先我们为每个vue属性用Object.defineProperty()实现数据劫持,为每个属性分配一个订阅者集合的管理数组dep;然后在编译的时候在该属性的数组dep中添加订阅者,v-model会添加一个订阅者,{ {}}也会,v-bind也会,只要用到该属性的指令理论上都会,接着为input会添加监听事件,修改值就会为该属性赋值,触发该属性的set方法,在set方法内通知订阅者数组dep,订阅者数组循环调用各订阅者的update方法更新视图
2、什么是 MVVM?
- M 数据 从后台获取的商品数据
- V 视图 就是写好的页面,每一个div,每一个input 都是视图,代表UI 组件
- VM 视图模型,
- 数据发生变化,通过视图模型会改变视图的显示,视图上的改变,也会通过视图模型进而影响数据的变化
3、vue的生命周期
- 创建前后beforeCreate created
- 载入前后beforeMount mounted
- 更新前后beforeUpdate updated
- 销毁前后beforeDestroy destroy
4、DOM 渲染在 哪个周期中就已经完成
mounted
5、ajax请求在vue中在哪个生命周期中?
在created以及mounted中
6、beforeDestroy有没有this
没有
7、第一次加载页面会触发哪几个钩子函数
beforeCreate, created, beforeMount, mounted
8、computed和watch的区别
计算属性computed
- 支持缓存,只有依赖数据发生变化时,才会重新计算函数
- 不支持异步操作
- 自动监听依赖值的变化,从而动态返回内容
侦听属性watch
- 不支持缓存,只要数据变化,就会执行侦听函数
- 支持异步操作,
- 监听是一个变化,在监听的值变化是,可以触发一个回调,并做一些其他事情
9、计算属性comput和普通函数method的区别
- 计算属性computer初次执行函数后,值会存储缓存中,依赖项未改变,不会再执行函数而是从缓存中立即取