vue 或 react 框架相关(面试)

本文详细探讨了Vue和React框架的相关面试知识点,包括Vue的响应式原理、Vue3的改变、自定义指令、性能优化、组件通信、生命周期、Vuex、路由原理以及JavaScript基础概念如闭包、原型链、this指向、数组方法等。此外,还涉及到了HTTP协议、异步编程、状态管理等核心概念。
摘要由CSDN通过智能技术生成

持续更新…

1. vue 响应式原理以及双向绑定实现代码 ? 🌟

v-model本质就是一个语法糖,可以看成是value + input方法的语法糖。
可以通过model属性的prop和event属性来进行自定义。原生的v-model,会根据标签的不同生成不同的事件和属性。

Vue事件绑定原理

原生事件绑定是通过addEventListener绑定给真实元素的,组件事件绑定是通过Vue自定义的$on实现的。

在这里插入图片描述

2. vue3 响应式原理,有什么不同?

Vue3.x改用Proxy替代Object.defineProperty。因为Proxy可以直接监听对象和数组的变化,并且有多达13种拦截方法。并且作为新标准将受到浏览器厂商重点持续的性能优化。
  1. vue 的 diff 算法思路,怎么对比节点?
  2. vue 的 compile 实现?🌟

5. vue 如何自定义指令?具体的 api 写法?

如何在vue2和vue3中自定义全局指令

6. vue3 对于 vue2 在性能上的优化(从 compile 和 runtime 两方面)?

在这里插入图片描述

react 有什么不同?了解 hooks 吗?

7.再说一下Computed和Watch

computed : 当一个属性受多个属性影响的时候就需要用到 computed ,最典型的栗子:购物车商品结算的时候

watch : 当一条数据影响多条数据的时候就需要用 watch ,栗子:搜索数据
Computed本质是一个具备缓存的watcher,依赖的属性发生变化就会更新视图。
适用于计算比较消耗性能的计算场景。当表达式过于复杂时,在模板中放入过多逻辑会让模板难以维护,可以将复杂的逻辑放入计算属性中处理。

Watch没有缓存性,更多的是观察的作用,可以监听某些数据执行回调。当我们需要深度监听对象中的属性时,可以打开deep:true选项,这样便会对对象中的每一项进行监听。这样会带来性能问题,优化的话可以使用字符串形式监听,如果没有写到组件中,不要忘记使用unWatch手动注销哦。

在这里插入图片描述

8.说一下v-if和v-show的区别

//  简单回答
当条件不成立时,v-if不会渲染DOM元素,v-show操作的是样式(display),切换当前DOM的显示和隐藏。

// 详细回答
共同点: 都能控制元素的显示和隐藏;

不同点: 实现本质方法不同,v-show 本质就是通过控制 css 中的 display 设置为 none,控制隐藏,只会编译一次;v-if 是动态的向 DOM 树内添加或者删除 DOM 元素,若初始值为 false ,就不会编译了。而且 v-if 不停的销毁和创建比较消耗性能。总结:如果要频繁切换某节点,使用 v-show (切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用 v-if(初始渲染开销较小,切换开销比较大)。

在这里插入图片描述
v-if 和 v-show 的区别,哪个性能更好?

9.组件中的data为什么是一个函数?

保证复用性,避免数据污染(多个组件公用一个内存地址)

在这里插入图片描述

一个组件被复用多次的话,也就会创建多个实例。本质上,这些实例用的都是同一个构造函数。如果data是对象的话,对象属于引用类型,会影响到所有的实例。所以为了保证组件不同的实例之间data不冲突,data必须是一个函数。

10.keep-alive了解吗

keep-alive实现原理

keep-alive可以实现组件缓存,当组件切换时不会对当前组件进行卸载。

常用的两个属性include/exclude,允许组件有条件的进行缓存。
// include 表示只有名称匹配的组件会被缓存,exclude 表示任何名称匹配的组件都不会被缓存 ,其中 exclude 的优先级比 include 高;
两个生命周期activated/deactivated,用来得知当前组件是否处于活跃状态。

keep
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值