vue知识点

1.vue2和vue3响应式数据的理解

响应式:就是数据的改变,对应的视图也会改变

vue2:是通过object.defineProperty()进行数据劫持,如果是多层次的对象就要递归

vue3:采用proxy,如果是多层次数据,用户不使用就不会递归

2.vue2中是如何检测数组变化的

vue2中没有使用defineProperty对这个数组的每一项进行拦截,而是选择重写数组方法

数组中如果是对象的数据类型,也进行递归处理

数组的索引和长度变化是无法监控的

3.vue中如何进行依赖收集

每一个属性都有一个dep,存放所依赖的watcher,当属性变化后通知自己对应的watcher去更新

默认在渲染的时候(获取这个响应式数据),此时就会触发属性收集依赖dep.depend()

当属性发生改变时触发watcher,通过dep.notify()

data属性=>> dep=>

在页面上使用=>watcher

4.nextTick原理?在哪使用?

使用nextTick中的回调函数在下一次dom更新循环结束之后,执行回调

用于获取更新后的dom

vue中的数据更新是异步的,使用nextTick方法可以保证用户定义的逻辑在更新之后执行

5.vue为什么需要使用虚拟dom

如果我们直接操作真实的dom 性能低

虚拟dom就是一个js对象,也可以理解为真实dom的抽象

6.vue中diff算法原理

vue2:递归+双指针

判断是不是同一个元素,不是同一个元素,直接替换

是同一个元素=》比对属性=》比对儿子(1老的有儿子,新的没有儿子 2新的有儿子,老的没有 3都是文本的情况 4都有儿子)=》双指针:头头,尾尾,头尾,尾头=》对比查找后进行复用

vue3:采用最长递增子序列 

7.请说明vue中key作用原理

vue中在patch过程中通过key可以判断两个虚拟节点是否相同(可以复用老的节点)

没有key导致更新的时候出错

8.作用域和作用域链

作用域:就是一个规则,用来查找变量

作用域链:多层嵌套作用域

9.闭包

概念:函数中返回一个函数  函数的声明的作用域和函数使用的作用域不同

用途1:获取私有作用域中的变量

用途2:这些变量可以保存到内存中

例子:

function a(){

    let n=0//保存到内存中

    function add(){

        n++

        return n

    }

    return add

}

let getN = a()
console.log(getN()) //1
console.log(getN()) //2

10.实现防抖

防抖:用户多次点击按钮浪费性能

11.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值