• Virtual DOM与React diff原理理解


    一 Virtual DOM理解:https://www.w3cplus.com/javascript/understand-the-Virtual-DOM.html

    主要从三个方面理解:一个对象,两个前提,三个步骤:

    1. 一个对象指的是Virtual DOM是一个基本的JavaScript对象,也是整个Virtual DOM树的基本。
    2. 两个前提分别是JavaScript很快和直接操作DOM很慢,这是Virtual DOM得以实现的两个基本前提。得益于V8引擎的出现,让JavaScript可以高效地运行,在性能上有了极大的提高。直接操作DOM的低效和JavaScript的高效相对比,为Virtual DOM的产生提供了大前提。
    3. 三个步骤指的是Virtual DOM的三个重要步骤,分别是:生成Virtual DOM树、对比两棵树的差异、更新视图。
      • 生成 Virtual DOM 树:一个DOM节点包含了很多的内容,但是一个抽象出一个DOM节点却只需要三部分:节点类型,节点属性、子节点。所以围绕这三个部分,我们可以使用JavaScript简单地实现一棵DOM树,然后给节点实现渲染方法,就可以实现虚拟节点到真是DOM的转化。
      • 对比两棵树的差异:比较两棵DOM树的差异是Virtual DOM算法最核心的部分,这也是我们常说的的 Virtual DOM的diff算法。
      • 更新视图。

    二  React diff原理:https://zhuanlan.zhihu.com/p/20346379

    老的 Diff 算法提出了三个策略来保证整体界面构建的性能,具体是:

    1. Web UI 中 DOM 节点跨层级的移动操作特别少,可以忽略不计。

    2. 拥有相同类的两个组件将会生成相似的树形结构,拥有不同类的两个组件将会生成不同的树形结构。

    3. 对于同一层级的一组子节点,它们可以通过唯一 id 进行区分。

    基于以上三个前提策略,React 分别对 tree diff、component diff 以及 element diff 进行算法优化:

    1. 通过分层求异的策略,对 tree diff 进行算法优化;
    2. 通过相同类生成相似树形结构,不同类生成不同树形结构的策略,对 component diff 进行算法优化;
    3. 通过设置唯一 key的策略,对 element diff 进行算法优化;

    三 React Fiber 架构:https://mp.weixin.qq.com/s?__biz=MzI1ODk2Mjk0Nw==&mid=2247484469&idx=1&sn=f68d044f1b0e4e2eb981e3878427b75b&scene=21#wechat_redirect

    diff算法缺点:

    面对数量庞大层级复杂的节点业务,大量dom的更新占用过多的内存和计算时间将导致:1 渲染UI不流畅 2 用户时间操作得不到及时反馈。

    React Fiber架构意义:

    React Fiber是react执行渲染时的一种新的调度策略,JavaScript是单线程的,一旦组件开始更新,主线程就一直被React控制,这个时候如果再次执行交互操作,就会卡顿。

    React Fiber重构这种方式,渲染过程采用切片的方式,每执行一会儿,就歇一会儿。如果有优先级更高的任务到来以后呢,就会先去执行,降低页面发生卡顿的可能性,使得React对动画等实时性要求较高的场景体验更好。

    四 React中keys作用:

    key是React中用于追踪哪些列表中元素被修改删除或者被添加辅助标识

    diff算法中,key用来判断该元素节点是被移动过来的还是新创建的元素,减少不必要的元素重复渲染

  • 相关阅读:
    高并发系统设计(二十):分布式架构如何跟踪排查慢请求问题?
    Git将多个commit合并成一个commit
    高并发系统设计(十九)【注册中心】:微服务架构结合RPC框架如何做到分布式系统寻址?
    高并发系统设计(十八):【RPC框架】10万QPS下如何实现毫秒级的服务调用?
    AfxSocketInit()
    TEXTMETRIC 结构详解
    OnInitialUpdate函数
    SetForegroundWindow
    GetSafeHwnd()函数
    MFC之CCommandLineInfo
  • 原文地址:https://www.cnblogs.com/terrymin/p/14596146.html
Copyright © 2020-2023  润新知