https://appf96umjwe7950.pc.xiaoe-tech.com/detail/p_603eeeb8e4b087d11d4e47bc/6

  1. 谈谈你对MVVM的了解?

MVVM模式的作用:解决分层。

MVC:晚期作用在后端,后端解决模板和数据再返回给浏览器,浏览器进行渲染。

model view controller

controller:解决业务逻辑(路由)

model:数据

view:渲染视图

MVP:

益处:暗藏controller,应用mvvm简化了数据到视图绑定的过程,能够主动监听变动

mvvm是模拟mvc模式在前端进行分层,手动获取数据操作视图,因为controller负载臃肿,更难保护,将数据主动映射到视图上,不须要通过controller解决。

解决了controller臃肿问题。

  1. 请说一下Vue2及Vue3响应式数据的了解

vue2应用Object.defineProperty把属性都劫持,从新定义,只能劫持曾经存在的属性,

=> 数组:

对于多层对象, 须要递归并且从新定义,所以性能差,

vue2的问题 : 属性必须在对象里能力劫持

递归

vue3 不必重写get和set 在取值的时候判断是不是对象,是对象再代理

懒代理 默认不代理 只有取值的时候代理

vue3 data里是数据 心愿哪些是响应式的 能够用对应api

响应式数据: 数据变了告诉我。

双向数据绑定

  1. Vue中如何检测数组变动

更改数组自身

能扭转数组,然而监控不到数组长度

函数劫持

  1. Vue中如何进行依赖收集?

  1. 如何了解Vue中模板编译原理

  1. Vue生命周期钩子是如何实现的

都是回调函数

把他放在一个数组里

合成整个数组 顺次执行

  1. Vue的生命周期办法有哪些?个别在哪一步发送申请及起因

  2. Vue.mixin的应用场景和原理

vuex vue-router

  1. Vue组件data为什么必须是个函数?

唯一性 保障组件之间的数据不受影响

  1. nextTick在哪里应用?原理是?

保障在更新结束后再获取内容,更新的策略是异步的

自身不代表异步,是异步的 然而是将内容保护到一个数组里,最终依照程序执行,第一次会开启一个异步工作,后续更新是往数组里放,并不是又开启一个异步工作

为什么采纳异步更新,心愿都改完之后 执行

原理 promise => settimeout

  1. computed和watch区别

底层实现都靠watcher,性能项不一样

computed次要做缓存的,一个属性依赖的数据没有变,他就不会从新计算

watch是数据变了就执行回调

计算属性多了缓存,computed只有取值的时候才执行

initComputed,计算属性理论是个办法,外围object.defineProperty get函数 自身是属性,写成一个函数

计算属性watcher 加了懒加载属性lazy:true,默认第一次不执行

initWatch

vue里有三种watcher : 渲染watcher 计算属性watcher (lazy:true) 用户watcher