- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
本文由简悦SimpRead转码,原文地址
时下React16乃至React17都是业界公认的“当红炸子鸡”,相比之下React15经是一副黯淡
无光垂垂老矣的囧相了。
在这样的时代背景下,愿意自动自发地了解React15的人越来越少,这是一个令人心碎的现象。毕竟
有位曾经,“以史为镜,可以知兴替”;还有另一位曾经,“学习知识需要建立必要且完
整的上下文”——如果我们不清楚React15的运作机制,就无从把握它的局限性;如果我们不能确切地
把握React15的局限性,就无法从根本上理解React16大背后的设计动机。因此在追逐时代潮流
之前,必须学好。
在本讲,我们就要迈出“学习”的第一步,也是最重要的一步——理解React15的“栈调和”算法。
调和(Reconciliation)过程与Diff算法
迫于钻名词牛角尖的人实在太多,开篇我先来带你做一个概念辨析,显式一下专栏中所提及的
“调和”和“Diff”两个东西的确切指向。
“调和”又译为“协调”,协调过程的定义,藏在React对虚拟DOM这一概念的解释中,原文如
下:
VirtualDOM是一种编程概念。在这个概念里,UI以一种理想化的,或者说“虚拟的”表现形式被
保存于内存中,并通过如ReactDOM等类库使之与“的”DOM同步。这一过程叫作协调(调
和)。
我来划一下这段话里的重点:通过如ReactDOM等类库使虚拟DOM与“的”DOM同步,这一过
程叫作协调(调和)。
说人话:调和指的是将虚拟DOM映射到DOM的过程。因此严格来说,调和过程并不能和Diff画
等号。调和是“使一致”的过程,而Diff是“找不同”的过程,它只是“使一致”过程中的一个环节。
React的源码结构佐证了这一点:React从大的板块上将源码划分为了Core、Renderer和Reconciler
三部分。其中Reconciler(调和器)的源码位于src/renderers/shared/stack/reconciler这个路径,调
和器所做的工作是一系列的,包括组件的挂载、卸载、更新等过程,其中更新过程涉及对Diff算法的调
用。
所以说调和!Diff这个结论,是站得住脚的,如果你持有这个观点,说明你很专业,为你点赞!
但是!在如今大众的认知里,当我们讨论调和的时候,其实就是在讨论Diff。
这样的认知也有其合理性,因为Diff确实是调和过程中最具代表性的一环:根据Diff实现形式的不
同,调和过程被划分为了以React15为代表的“栈调和”以及React16以来的“Fiber调和”。在实际的
面试过程中,当面试官抛出Reconciliation相关问题时,也多半是为了了解候选人对Diff的掌握程度。因
此在本讲中,“栈调和”指的就是React15的Diff算法。
Diff策略的设计思想
在展开讲解Diff算法的具体逻辑之前,我们首先从整体上把握一下Diff的设计思想。
前面我们已经提到,Diff算法其实就是“找不同”的过程。在计算机科学领域,要想找出两个树结构之间
的不同,传统的计算方法是通过循环递归进行树节点的一一对比,这个过程的算法复杂度是O(n3)。尽
管这个算法本身已经是几代程序员持续优化的结果,但对计算能力有限的浏览器来说,O(n3)仍然意味
着一场性能。
具体来说,若一张页面中有100个节点(这样的情况在实际开发中并不少见),1003算下来就有十万次
操作了,这还只是一次Diff的开销;若应用规模更大一点,1000个节点,那么操作次数将会直接
您可能关注的文档
最近下载
- 汤显祖和牡丹亭.pptx VIP
- 2024年春江苏开放大学Android基础050324第三次形考作业.doc VIP
- 冠状动脉CT血管成像在慢性冠脉综合征的风险分层和诊疗中应用的专家共识.pptx
- 上海市浦东新区华东师范大学第二附属中学2024届高一数学第一学期期末考试试题含解析.doc VIP
- 中级商务汉语 全套课件.PPT VIP
- 中国式现代化党课学习主题教育.pptx VIP
- 行政事业单位审计存在的常见问题与对策.pptx VIP
- 营养科患者营养评估.pptx VIP
- IPC-A-610E-2010 国外国际标准.pdf
- 2024-2025学年高中信息技术(信息科技)必修1 数据与计算沪科版(2019)教学设计合集.docx
原创力文档


文档评论(0)