React框架原理

本文深入探讨React的设计思想,包括其接近原生JS的特性、基于fiber的更新原理和diff算法。React通过单项数据绑定、jsx转换及运行时管理,实现高效UI渲染。文章详述了React创建更新、任务调度、render和commit四个阶段,揭示了React如何响应外部事件并维持稳定和通用的宿主树。
摘要由CSDN通过智能技术生成


前言

文章会围绕React前端组件化开发框架原理进行讨论。


提示:以下是本篇文章正文内容,下面案例可供参考

一、React设计思想

1.原生JS

React相比于vue来说更接近原生JS,因为在react内部,jsx模板经babel转化后是一个对象,所有的操作都是基于这个对象和其对应的fiber结构来操作的,而vue.js通过编译将templete模板转换成渲染函数(render),执行渲染函数就可以得到一个虚拟节点树。

2.实现和更新原理

React将每个节点转化为fiber对象,最终形成一个fiber树结构,来依次渲染。通过两个fiber的对比来实现更新。这里要说到几个diff算法,分别是tree diff,component diff和element diff。同时更新过程可能会被打断,让优先级更高的任务优先执行(例如浏览器渲染)

  • TREE DIFF
    核心是层次遍历和层级监控。如果同层有节点不同则会删除它的子树进行重新渲染,所以设置state要使粒度合适的小一些。能带来性能上的提升。
  • COMPONENT DIFF
    如果某两个节点不是一个类型则进行TREE DIFF,否则进行ELEMENT DIFF。
  • ELEMENT DIFF
    先根据每个节点的ID进行移位检查比较是不是同一个ID,并得到它如何进行增删查改。

3.单项数据绑定

父传子用props,有子传父的方法,不支持双向绑定,需要手动配置。

4.模板的格式和转换

用jsx指定模板,jsx类似JavaScript的扩展,在函数组件返回jsx,或者class组件的render方法内返回jsx,jsx将转换成对象。

5.关注运行时

React 更像是一种编程运行时。

React 程序通常会输出一个会随时间变化的树。 它有可能是 DOM 树 、iOS 视图层、PDF 原语 ,或者是 JSON 对象 。不过通常我们希望用它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值