千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

一.Vue和React中diff算法的区别:
vue和react的diff算法,都是忽略跨级比较,只做同级比较,vue diff时调用patch函数,参数是vnode和oldvnode,分别代表新旧节点
1.vue对比节点。当节点元素相同,但是classname不同,认为是不同类型的元素,删除重建,而react认为是同类型节点,只是修改节点属性
2.vue的列表对比,采用的是两端到中间比对的方式,而react采用的是从左到右依次对比的方式。
二.虚拟dom为什么会提高性能?
虚拟dom其实就是一个javascript对象,通过这个javascript对象来描述真实dom,真实dom的操作,一般都会对某块元素的整体重新渲染,采用虚拟dom的话,当数据变化的时候,只需要局部刷新变化的位置就好了,虚拟dom相当于再js和真实dom中间加了一个缓存,利用dom diff算法避免了没有必要的dom操作,从而提高性能。
三.vuex和redux有什么区别?共同思想
区别:
1.vuex改进了redux中的action和reducer函数,以mutations变化函数取代reducer,无需switch,只需在对应的mutation函数里改变state就可以
2.vuex由于vue自动重新渲染的特性,无需订阅重新渲染函数,只要生成新的state就可以
3.vuex数据流的顺序是,view调用store.commit提交对应的请求到store中对应的mutation函数--store改变(vue检测到数据变化自动渲染)
共同思想:
1.单一数据源
2.变化可以预测
3.本质上:redux和vuex都是对MVVM思想的服务,将数据从视图中抽离的一种方案
4.形式上:vuex借鉴了redux,将store作为全局的数据中心,进行数据管理
四.做管理系统项目vue和react怎么选择?
1.评估项目成员的水平,如果成员js基础较好,编码能力较强则选择react,否则选vue
2.评估系统的大小,如果想构建生态系统,则选择react,如果要求要快,简单,’能用就行‘ 就选择vue
3.评估系统运行环境,如果想要一个同时适用于web端和原生app的框架,就选择react
五.react类组件和函数组件的区别?
1.语法上:函数组件是一个函数,返回一个jsx元素,而类组件是用es6语法糖class定义,继承component这个类
2.类组件中可以通过state进行状态管理,而在函数组件中不能使用,setState(),在react16.8以后,函数组件可以通过hooks中的useState来模拟类组件中的状态管理
3.类组件中有一系列的生命周期钩子函数,在函数组件也需要借助hooks来使用生命周期函数
4.类组件能够捕获最新的值,只是因为当实例的props属性发生修改时,class组件能够直接通过this捕获到组件最新的props,而函数组件是捕获渲染所使用的值,已经因为javascript闭包的特性,之前的props参数保存在内存之中,无法从外部进行修改。