2021-02-02

本文探讨了React和Vue在数据绑定和页面渲染上的区别,React强调手动更新,Vue采用双向绑定。还涉及TypeScript、Fiber算法、Diff算法、状态管理和性能优化方法,如shouldComponentUpdate、useMemo和useCallback。此外,讨论了浏览器缓存、webpack优化以及React事件机制等前端开发关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

react和vue的区别?

主要在于数据改变,渲染页面上面,vue是自动挡,直接双向绑定,数据一改变,页面就自动更新了。
react是手动挡,必须setState手动更新数据才可以,更新页面,具有更好的灵活性。需要更好的js基础,因为很多操作都要手动写js原生代码。每个人都有自己的技术审美。我喜欢这种能让自己技术更扎实的框架。开自动挡的车和开手动挡的车,由自己做主!

typeScript

ts是js的超集,为js提供了类型系统

fiber

做异步diff的,那以前的递归diff变为现在的遍历diff,这样就可以异步更新数据了。
Fiber 算法的最大特点是可以做到异步可中断的执行。

diff算法

更新数据的时候,比较js对象的差异
tree diff: 只对比同层的DOM节点,不进行跨层比较
component diff:当发现不是同一类型的组件,会删除旧的组件,创建新的组件。
element diff : 对同一层级的一组子节点,需要通过可以就行唯一的标识来区分,如果没有区分,一旦有插入动作,会导致插入之后的列表全部重新渲染。这就是渲染列表的时候必须要key这个属性。

context

主要用于跨层级通信,react自带的context进行通信,createContext创建上下文和useContext使用上下文
状态提升:我们要使用状态管理器的状态,一个状态可能会被多个组件进行依赖和影响。所以我们就需要把共享的状态放在父组件的context上面,这就是状态提升,这个父组件下面所有的子组件就可以直接从context中拿到状态,不需要层层传递。
store的数据约定只能用dispatch修改

react里面优化性能的手段?

类组件里面:shouldComponentUpdata判断渲染
使用高阶函数包装组件react.memo
函数组件:useMemo ,userCallback
其他:列表需要频繁变化的时候,唯一的key进行标识。而不是数组下标。
防抖,节流
必要时用css样式显示和隐藏组件,而不是条件判断渲染隐藏组件
懒加载:随着用户一边滚动页面,一边加载请求数据的加载方式,一般伴随图片懒加载,先用空的图片路径占位置,防止页面布局错乱,当用户刷到那里了,才给出真实的图片路径

前后端联调合作

项目开发之前,开会与后端开发人员多沟通,确定交换数据的接口,方式,格式,尽量沟通得详细一些,免得后面有很多问题去纠结。
请求参数。字段,类型,说明,备注是否必填
返回参数:返回成功还是失败,

useEffect

相当于类组件的挂载后,更新后,卸载前,这三个生命周期。同样可以在里面请求后端数据,拿取dom节点,echart实例化
可以传入两个参数,第一个是一个方法,一般在方法里面做一些操作,第二个是一个数组,如果传入第二个参数,那么只有当监听的数据和状态发生改变的时候,这个方法才会执行。

函数组件和类组件,为什么要用函数组件?

函数组件比类组件的性能要高,类组件的使用会实例化,而函数组件的使用,就是执行函数返回结果就行了,类组件声明过程比较繁琐,需要用到class,extend关键字来继承component,内部还有constructor来建立state对象,声明一些状态的初始值,,render()会返回类的实例要创建的元素。所以函数组件 的代码比类组件的代码简洁很多

普通函数和箭头函数的区别?

1.箭头函数没有prototype属性,所以箭头函数本身没有this。
2.箭头函数的this指向在定义的时候继承来自外层的第一个普通函数的this,跟使用的位置没有关系,被继承的普通this指向改变,箭头函数的this指向也会发生改变
3.不能直接修改箭头函数的this指向
4.箭头函数外层没有普通函数,那么this指向window

浏览器缓存机制

缓存是性能优化中最简单的优化方案,减少了网络传输带来的消耗
一个请求分为三步,客户端请求,后端响应,浏览器渲染,浏览器缓存可以帮我们在第一步和第三步优化性能,比如直接缓存数据不再发起请求
(1)缓存位置:
1.service Worder(运行在浏览器背后的独立线程,一般用于缓存,用service Worder的时候必须是HTTPS协议,因为其内部需要请求拦截,所以要用HTTPS协议)
2.memory cache(内存缓存):从内存中读取很快
3.disk cache(硬盘缓存) :相对速度较慢
(2)缓存策略(都是通过请求头实现):
1.强缓存:表示缓存期间不需要请求
2.协商缓存:缓存过期了,就需要发起验证资源是否更新,如果资源没有发生改变,服务端就返回304,更新浏览器有缓存有效期

react新增生命周期

getDerivedStateFromToProps:(获得派生的状态,从props里面)
这个生命周期只要页面数据更新就会被触发。从名字就可以看出来,这个生命周期是从props中提取state,实际就是传入props而又映射到state上面。
getSnapshotBeforeUpdate:(获得快照在更新之前)
在更新前从DOM中获得一些信息,虚拟DOM转化为真实DOM之前一刻调用,这个时刻读取即将被改变的数据

错误边境

当任何一个子组件在渲染过程中,在一个生命周期方法中,或在构造函数中发生错误,这些方法会被调用。

react的事件机制

就是说react写的事件不是绑定在真实的DOM上面,而是通过事件代理的方式把所以事件统统绑定在document上面,这样可以减少内存的消耗,还能在组件销毁时统一移除事件。

webpack性能优化

减少webpack打包时间:优化loader,影响打包时间的首当其冲的是babel,将代码转化成字符串生成AST,AST继续转化生成新的代码存起来,转化的代码越多,效率就越低,优化loader的文件搜索范围,还可以把babel编译过的文件缓存起来这样也可以减少打包时间。

usememo和usecallback

usecallback使用场景:
有一个父组件,其中包含一个子组件,子组件作为接收一个函数作为props,通常而言,父组件更新了,子组件也会执行更新,但大多数场景下,更新是没有必要的,我们就可以通过usecallback来返回函数,把这个函数作为props传给子组件,这样子组件就可以避免不必要的更新了
usememo的使用场景:
用来优化函数组件的重新渲染的,当传入的属性没有变化是就不会重新渲染,否则就会重新渲染,以此来优化性能
1.div水平垂直居中
transfrom:translate(-50%,-50%)
2.宏任务和微任务
宏任务:当前调用栈执行的代码,一般为script,setTimeOut,setInterval
微任务:此次事件循环中宏任务执行完了,下一次宏任务开始执行之前运行的代码,就叫微任务,可以理解为回调事件。
运行机制:
1.执行宏任务,
2.遇到微任务,就把微任务放到微任务队列中
3.等宏任务执行完了,就执行队列中的微任务
4.微任务执行完了
5.执行下一个事件循环

3.setState原理
4.es5实现promise
5.redux原理
6.浏览器渲染机制
7.你遇到的最难的事情,你是怎么解决的
8.js类型
9.防抖节流的应用场景
节流场景:当我们在鼠标滚轮事件的时候,会发送请求,我们又不希望在滚动过程中持续发送请求,而是隔一段时间发送请求,这个时候我们就可以选择节流。
防抖:有一个按钮点击会触发点击事件,我们又不希望每一次点击都会触发网络请求,而是在用户点击一段时间后,没有再次点击的情况下,才发起网络请求,对于这样的情况下,我们往往会选择防抖。
预加载:开发中,有些资源不需要马上用到,但是我们想要尽早获取到,这个时候我们可以用预解析。

"sgmediation.zip" 是一个包含 UCLA(加利福尼亚大学洛杉矶分校)开发的 sgmediation 插件的压缩包。该插件专为统计分析软件 Stata 设计,用于进行中介效应分析。在社会科学、心理学、市场营销等领域,中介效应分析是一种关键的统计方法,它帮助研究人员探究变量之间的因果关系,尤其是中间变量如何影响因变量与自变量之间的关系。Stata 是一款广泛使用的统计分析软件,具备众多命令和用户编写的程序来拓展其功能,sgmediation 插件便是其中之一。它能让用户在 Stata 中轻松开展中介效应分析,无需编写复杂代码。 下载并解压 "sgmediation.zip" 后,需将解压得到的 "sgmediation" 文件移至 Stata 的 ado 目录结构中。ado(ado 目录并非“adolescent data organization”缩写,而是 Stata 的自定义命令存放目录)目录是 Stata 存放自定义命令的地方,应将文件放置于 "ado\base\s" 子目录下。这样,Stata 启动时会自动加载该目录下的所有 ado 文件,使 "sgmediation" 命令在 Stata 命令行中可用。 使用 sgmediation 插件的步骤如下:1. 安装插件:将解压后的 "sgmediation" 文件放入 Stata 的 ado 目录。如果 Stata 安装路径是 C:\Program Files\Stata\ado\base,则需将文件复制到 C:\Program Files\Stata\ado\base\s。2. 启动 Stata:打开 Stata,确保软件已更新至最新版本,以便识别新添加的 ado 文件。3. 加载插件:启动 Stata 后,在命令行输入 ado update sgmediation,以确保插件已加载并更新至最新版本。4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值