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