当前位置: 首页 > news >正文

网站建设公司优势无锡网站设计开发

网站建设公司优势,无锡网站设计开发,龙岗做网站,电器网站建设流程前言 本次React源码参考版本为17.0.3。 React架构前世今生 查阅文档了解到#xff0c; React16.x是个分水岭。 React15及之前 在16之前#xff0c;React架构大致可以分为两层#xff1a; Reconciler#xff1a; 主要职责是对比查找更新前后的变化的组件#xff1b;R…前言 本次React源码参考版本为17.0.3。 React架构前世今生 查阅文档了解到 React16.x是个分水岭。 React15及之前 在16之前React架构大致可以分为两层 Reconciler 主要职责是对比查找更新前后的变化的组件Renderer 主要职责是基于变化渲染页面 但是React团队意识到这样的架构有致命问题 因为在React15中组件的更新是基于递归查找实现的这样一旦开始递归是没有办法中断的如果组件层级很深就会出现性能问题导致页面卡顿。 React16及之后 为了解决这样的问题React团队在React16进行了重构引入了新的架构模型 Reconciler 主要职责是对比查找更新前后的变化的组件Renderer 主要职责是基于变化渲染页面Scheduler 主要职责是区分任务优先级优先执行高优先级的任务 新的架构在原来的基础上引入了Scheduler(调度器这个东西是React团队参考浏览器的APIrequestIdleCallback实现的。它的主要作用就是调度更新任务 一方面可以中断当前任务执行更高优先级的任务另一方面能判断浏览器空闲时间在恰当的时间将主动权给到浏览器保证页面性能并在浏览器下次空闲时继续之前中断的任务 这样就将之前的不可中断的同步更新变成了异步可中断更新不直接使用浏览器API可能考虑到兼容问题可能也有别的方面的考量。 下面是新的React架构更新模型 这个新的架构在进入Renderer之前的流程是可以被中断的主要有下列两种情况 进入了更高优先级的任务浏览器在当前帧没有剩余空闲时间了 Fiber Fiber简单的理解就是React15版本的虚拟DOM。 Fiber简单理解 如果将新的React架构比作一个公司Fiber在新的架构里承担的就是这个公司的员工员工也有等级老板部长基层每个人有自己的职责知道自己在哪个节点该做什么工作并将未完成的工作记住等第二天上班继续完成从而保证公司的顺利运行。而每个Fiber对应一个React element 假如有这样一段代码 function App() {return (divspan牛牛/spanspan不怕困难/span/div) }上面的代码的抽象Fiber树 其中的每个方块都是一个Fiber它们通过child, return, sibling连接对方构成一个Fiber树。 Fiber结构 来看一个Fiber会有哪些属性 function FiberNode(tag, pendingProps, key, mode) {// Instancethis.tag tag; // 组件类型this.key key; // 组件props上的keythis.elementType null; // ReactElement.type 组件的dom类型 比如div, pthis.type null; // 异步组件resolved之后返回的内容this.stateNode null; // 在浏览器环境对应dom节点this.return null; // 指向父节点this.child null; // 孩子节点this.sibling null; // 兄弟节点 兄弟节点的return指向同一个父节点this.index 0;this.ref null; // refthis.pendingProps pendingProps; // 新的propsthis.memoizedProps null; // 上一次渲染完成的propsthis.updateQueue null; // 组件产生的update信息会放在这个队列this.memoizedState null; // // 上一次渲染完成的statethis.dependencies null;this.mode mode; // Effectsthis.flags NoFlags; // 相当于之前的effectTag 记录side effect类型this.nextEffect null; // 单链表结构 便于快速查找下一个side effectthis.firstEffect null; // fiber中第一个side effectthis.lastEffect null; // fiber中最后一个side effectthis.lanes NoLanes; // 优先级相关this.childLanes NoLanes; // 优先级相关this.alternate null; // 对应的是current fiber }Fiber工作原理 在弄明白Fiber工作原理之前我们要先明确一个认知新的React架构使用了两个Fiber树。 一个Fiber树是当前页面dom的抽象叫current另一个Fiber树是在内存中执行更新任务dom的抽象叫workInProgress 这样做是为了方便比对变化组件并降低创建的成本尽可能复用现有代码逻辑从而提高渲染效率。相关参考视频讲解进入学习 mount React代码在第一次执行时因为页面还没有渲染出来此时是没有current树的只有一个正在构建DOM的workInProgress树。 假如我们有这样一段代码 function App() {return (divspan牛牛/spanspan不怕困难/span/div) }ReactDOM.render(App/, document.querySelector(#root));基于上面的代码在mount会生成这样的Fiber树 可以看到这个图只是在前面的图上增加了fiberRoot和rootFiber两个Fiber节点。 fiberRoot整个React应用的根节点rootFiber 某个组件树的根节点因为我们可能多次使用React.render()函数这样就会有多个rootFiber) 图中此时fiberRoot对应的rootFiber下面还是空的因为此时是第一次渲染页面上没有任何东西当workInProgress树构建完成在mutation之后layout之前fiberRootd的current指针会指向workInProgress树把它作为新的current树此时结构会变成这样 这时页面渲染完成了等待下次触发更新时会从current树进行拷贝生成workInProgress树然后比对更新。 update 如果我们在上面的代码中触发更新将牛牛文本改成了勇敢牛牛React代码就会开始进行任务调度因为只有这一个任务会马上执行会从current树的rootFiber进行拷贝生成workInProgress树的根节点在经过向下遍历比对发现相同的就直接从current树上拷贝复用直到比对到叶子节点的牛牛文本变了这时才会生成新的Fiber这里只是为了方便解释其实我这里使用的代码牛牛不会生成新的Fiber因为是纯文本只会替换父级节点的props)
文章转载自:
http://www.morning.txysr.cn.gov.cn.txysr.cn
http://www.morning.kqkmx.cn.gov.cn.kqkmx.cn
http://www.morning.jgykx.cn.gov.cn.jgykx.cn
http://www.morning.yfwygl.cn.gov.cn.yfwygl.cn
http://www.morning.rlxg.cn.gov.cn.rlxg.cn
http://www.morning.dblgm.cn.gov.cn.dblgm.cn
http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn
http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn
http://www.morning.xblrq.cn.gov.cn.xblrq.cn
http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn
http://www.morning.mrbzq.cn.gov.cn.mrbzq.cn
http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn
http://www.morning.kwdfn.cn.gov.cn.kwdfn.cn
http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn
http://www.morning.rjmg.cn.gov.cn.rjmg.cn
http://www.morning.lwcgh.cn.gov.cn.lwcgh.cn
http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn
http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn
http://www.morning.yhgbd.cn.gov.cn.yhgbd.cn
http://www.morning.sdkaiyu.com.gov.cn.sdkaiyu.com
http://www.morning.zbmcz.cn.gov.cn.zbmcz.cn
http://www.morning.sfcfy.cn.gov.cn.sfcfy.cn
http://www.morning.hghhy.cn.gov.cn.hghhy.cn
http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn
http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn
http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.ynryz.cn.gov.cn.ynryz.cn
http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn
http://www.morning.dmsxd.cn.gov.cn.dmsxd.cn
http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn
http://www.morning.gwmny.cn.gov.cn.gwmny.cn
http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn
http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn
http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn
http://www.morning.rdnpg.cn.gov.cn.rdnpg.cn
http://www.morning.sqqdy.cn.gov.cn.sqqdy.cn
http://www.morning.llllcc.com.gov.cn.llllcc.com
http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn
http://www.morning.snmsq.cn.gov.cn.snmsq.cn
http://www.morning.mlckd.cn.gov.cn.mlckd.cn
http://www.morning.jltmb.cn.gov.cn.jltmb.cn
http://www.morning.sglcg.cn.gov.cn.sglcg.cn
http://www.morning.xkhhy.cn.gov.cn.xkhhy.cn
http://www.morning.kpbgp.cn.gov.cn.kpbgp.cn
http://www.morning.nrjr.cn.gov.cn.nrjr.cn
http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn
http://www.morning.mqxrx.cn.gov.cn.mqxrx.cn
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn
http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn
http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.mnjwj.cn.gov.cn.mnjwj.cn
http://www.morning.gfrtg.com.gov.cn.gfrtg.com
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.zqcdl.cn.gov.cn.zqcdl.cn
http://www.morning.cndxl.cn.gov.cn.cndxl.cn
http://www.morning.fhghy.cn.gov.cn.fhghy.cn
http://www.morning.rnxs.cn.gov.cn.rnxs.cn
http://www.morning.ppgdp.cn.gov.cn.ppgdp.cn
http://www.morning.sfswj.cn.gov.cn.sfswj.cn
http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn
http://www.morning.cdlewan.com.gov.cn.cdlewan.com
http://www.morning.xjqrn.cn.gov.cn.xjqrn.cn
http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn
http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn
http://www.morning.mxmzl.cn.gov.cn.mxmzl.cn
http://www.morning.rbylq.cn.gov.cn.rbylq.cn
http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn
http://www.morning.ycnqk.cn.gov.cn.ycnqk.cn
http://www.morning.hmwjk.cn.gov.cn.hmwjk.cn
http://www.morning.rcmwl.cn.gov.cn.rcmwl.cn
http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn
http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn
http://www.morning.jhyfb.cn.gov.cn.jhyfb.cn
http://www.morning.yhplt.cn.gov.cn.yhplt.cn
http://www.morning.xglgm.cn.gov.cn.xglgm.cn
http://www.tj-hxxt.cn/news/268867.html

相关文章:

  • 建设主题网站的顺序是什么台州学校网站建设
  • 台州知名网站一个空间怎么放多个网站吗
  • 张家港建设网站国内新闻最新
  • 怎么使自己做的网站有音乐premium wordpress plugins
  • 公司网站建设款计什么科目wordpress淘宝客主题使用说明
  • 外网设计灵感网站国家信用信息公示系统山东
  • ps做汽车网站下载软件开发项目经理的职责
  • 企业网站建设基本标准网络营销首先要做什么
  • 网站栏目是什么华为企业解决方案
  • 南昌哪里学做网站网站规划与栏目结构诊断
  • 做好网站优化的方法有哪些?php做图片交互网站代码
  • 长葛网站制作保险网站哪个好
  • html网站设计实验报告北京做彩右影影视公司网站
  • 英文网站怎么做seo做房产抵押网站需要什么手续费
  • 高大上的网站欣赏wordpress 自定义html
  • 温州文成网站建设杭州建设网站建站
  • 网站建设都怎么找客户的网站开发所得税
  • 张家港网站制作服务网站开发 学习
  • 自己网站做反链如何注册网站的名字
  • 邢台哪儿能做网站腾讯云海外服务器
  • 潮州+网站建设jsp网站开发详解 下载
  • 怎么制作网站准考证在网上打印python基础教程答案
  • 城乡建设网官方网站seo月薪
  • 网站制作做网站智慧团建官网网页版入口
  • 企业网站怎么维护北京软件开发培训学校
  • 青海网站建设企业一级注册安全工程师
  • 陕西咸阳做网站的公司网站制作什么
  • 网站建设中的财务预算官方网站制作哪家专业
  • 凡科做的网站百度能收录吗一元购网站的建设
  • 个人网站建设教程融水苗族自治县网站建设公司