https://appf96umjwe7950.pc.xiaoe-tech.com/detail/p_603eeeb8e4b087d11d4e47bc/6
谈谈你对MVVM的理解?
MVVM模式的作用:解决分层。
MVC:早期作用在后端,后端处理模板和数据再返回给浏览器,浏览器进行渲染。
model view controller
controller:处理业务逻辑(路由)
model:数据
view:渲染视图
MVP:
好处:隐藏controller,使用mvvm简化了数据到视图绑定的过程,可以自动监听变化
mvvm是模仿mvc模式在前端进行分层,手动获取数据操作视图,因为controller负载臃肿,更难维护,将数据自动映射到视图上,不需要经过controller处理。
解决了controller臃肿问题。
请说一下Vue2及Vue3响应式数据的理解
vue2使用Object.defineProperty把属性都劫持,重新定义,只能劫持已经存在的属性,
=> 数组:
对于多层对象, 需要递归并且重新定义,所以性能差,
vue2的问题 : 属性必须在对象里才能劫持
递归
vue3 不用重写get和set 在取值的时候判断是不是对象,是对象再代理
懒代理 默认不代理 只有取值的时候代理
vue3 data里是数据 希望哪些是响应式的 可以用对应api
响应式数据: 数据变了通知我。
双向数据绑定
Vue中如何检测数组变化
更改数组本身
能改变数组,但是监控不到数组长度
函数劫持
Vue中如何进行依赖收集?
如何理解Vue中模板编译原理
Vue生命周期钩子是如何实现的
都是回调函数
把他放在一个数组里
合成整个数组 依次执行
Vue的生命周期方法有哪些?一般在哪一步发送请求及原因
Vue.mixin的使用场景和原理
vuex vue-router
Vue组件data为什么必须是个函数?
唯一性 保证组件之间的数据不受影响
nextTick在哪里使用?原理是?
保证在更新完毕后再获取内容,更新的策略是异步的
本身不代表异步,是异步的 但是是将内容维护到一个数组里,最终按照顺序执行,第一次会开启一个异步任务,后续更新是往数组里放,并不是又开启一个异步任务
为什么采用异步更新,希望都改完之后 执行
原理 promise => settimeout
computed和watch区别
底层实现都靠watcher,功能项不一样
computed主要做缓存的,一个属性依赖的数据没有变,他就不会重新计算
watch是数据变了就执行回调
计算属性多了缓存,computed只有取值的时候才执行
initComputed,计算属性实际是个方法,核心object.defineProperty get函数 本身是属性,写成一个函数
计算属性watcher 加了懒加载属性lazy:true,默认第一次不执行
initWatch
vue里有三种watcher : 渲染watcher 计算属性watcher (lazy:true) 用户watcher
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。