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

学网站建设工作室谷歌google play下载

学网站建设工作室,谷歌google play下载,dw网页制作教程个人网站,wordpress装到路由器上1、什么是虚拟DOM 虚拟DOM 是javascript的一个对象,是内存中的一种数据结构,以树的形式存储UI的状态,树中的每个节点都代表着真实的DOM,用来描述我们希望在页面看到的 HTML结构; 现在的MVVM 框架,大多使用…

1、什么是虚拟DOM

虚拟DOMjavascript的一个对象,是内存中的一种数据结构,以树的形式存储UI的状态,树中的每个节点都代表着真实的DOM,用来描述我们希望在页面看到的 HTML结构;
现在的MVVM 框架,大多使用虚拟DOM进行数据视图的更新,相比较真实DOM的操作,
操作真实DOM时: DOM属性繁多处理增删改成比较繁琐,处理效率低,会出现重绘回流现象,导致页面更新缓缓卡顿;

原生的DOM也是 js的一个对象,只不过是浏览器提供的对象;
比如在JSX 中写法:


const dom = <h1></h1>
// 对应虚拟DOM:
const dom = {type: 'h1'}
const dom = document.createElement('h1')
-------
const dom = <div className="name">Andy</div>
// 对应的虚拟DOM为:
dom = {type: 'div', props:{ className: 'name', children:'Andy'}}

2、虚拟DOM的用途作用

虚拟DOM主要是为了提升操作更新界面的效率;目前前端流行的前端框架React Vue都是使用虚拟DOM进行更新;但是在一些对于性能要求极高画面绘制精细的应用中,虚拟DOM依然无法满足需求,需要使用更加低级的渲染技术,如:WebGL 或者直接操作DOM;

主要流程:

创建虚拟DOM树:将UI组件转化为虚拟DOM树,来表示UI结构;
A、Diffing算法:
每次更新属性状态时候,会新创建一个虚拟DOM树,并与之前的虚拟DOM树进行对比,找出差异;
B、最小范围更新:
通过 Diffing 算法,React 确定需要更新的 DOM 节点,并只对发生变化的部分进行更新;
C、渲染更新:
React 根据 Diffing 结果,对真实 DOM 进行最小化的更新操作。

3、React 通过Diff 算法如何进行 current processworkInProcess 对比的,以及16.8前后版本性能的对比

虚拟DOM的 Diffing 算法是 React优化性能核心,通过启发式算法来对比两颗虚拟的 DOM树,最大限度减少对比的计算量;

同层节点对比
React 只会比较同层的节点,不会跨层对比不同层次的节点。也就是说,如果元素的位置发生了变化,React 会先删除原来的节点,再插入新的节点。

唯一 key 标识:
在处理动态列表时,React 通过 key 属性来区分不同的节点。如果列表中的每个元素都有一个唯一的 key,React 就能高效地找到变化的元素,并只更新该部分。

React 15之前使用的是递归创建虚拟DOM,递归不能中断,如果层级很深,多导致递归线程占用时间长,阻塞主线程而导致出现卡顿现象
React 16之后为了处理这种不能中断的方式,将更新方案修改为异步的可中断方案,推出Fiber架构,将任务切片分隔异步渲染,根据不同的需求分配不同的优先级进行渲染,支持分批次批量更新;
vue2中使用的是双端对比,即:分别一个从头开始,一个从末尾开始,向中间对比靠拢,在递归的同时会对DOM进行操作;

而React认为实际应用中对于列表翻转,大量重绘重排场景比较少,而是采用双缓存的技术,在React的进程中,最多会同时存在两个Fiber树,当前屏幕看到渲染出来的视图树称为 current fiber树;正在缓存中进行状态属性处理的 树称为 workInProcess fiber树,当 workInProcess fiber 树渲染完成后,应用根节点的 current 指针会指向 workInProcess fiber 树,从而将 workInProcess fiber树更改为 current fiber 树完成一次视图更新渲染;

React 的更新会经历两个阶段render 阶段 和 commit 阶段。render 阶段是可中断的,commit 阶段是不可中断的。

render 阶段会生成 fiber 树,所谓的 diff 就会发生在这个阶段。React 通过深度优先遍历来生成 fiber 树,整个过程与递归是类似的,因此生成 fiber 树的过程又可以分为「递」阶段和「归」阶段

commit 阶段主要执行各种 DOM 操作、生命周期钩子、某些 hook 等

因此,diff 阶段不会直接变更 DOM,而是留到 commit 阶段再做变更

4、虚拟DOM 对比时候的 注意事项,key?

如果列表只是简单的展示,没有增删改查操作,可以使用index作为key值,相反则key值需要是唯一的,否则会使新旧DOM对比时候消耗更多的性能;
如图:key 唯一时候,key 使用index 时候图像对比

使用index 作为key 时候如下图:

index 作为key时

使用 唯一标识 作为key 时候

请添加图片描述

``


文章转载自:
http://dissociation.rbzd.cn
http://lampless.rbzd.cn
http://anima.rbzd.cn
http://homicidal.rbzd.cn
http://areopagite.rbzd.cn
http://enigmatic.rbzd.cn
http://cottontail.rbzd.cn
http://ciel.rbzd.cn
http://unsolvable.rbzd.cn
http://apparent.rbzd.cn
http://doleritic.rbzd.cn
http://obstinate.rbzd.cn
http://parturition.rbzd.cn
http://sequela.rbzd.cn
http://oxyuriasis.rbzd.cn
http://proselytize.rbzd.cn
http://reforming.rbzd.cn
http://americanisation.rbzd.cn
http://iioilo.rbzd.cn
http://pyrex.rbzd.cn
http://ply.rbzd.cn
http://gymnastics.rbzd.cn
http://photonics.rbzd.cn
http://factually.rbzd.cn
http://documentarian.rbzd.cn
http://dirndl.rbzd.cn
http://laryngitic.rbzd.cn
http://asafoetida.rbzd.cn
http://cornute.rbzd.cn
http://buyer.rbzd.cn
http://stomatic.rbzd.cn
http://brainy.rbzd.cn
http://cladode.rbzd.cn
http://megawatt.rbzd.cn
http://counterreformation.rbzd.cn
http://cembalist.rbzd.cn
http://conquer.rbzd.cn
http://oleate.rbzd.cn
http://diarthrodial.rbzd.cn
http://empolder.rbzd.cn
http://turrical.rbzd.cn
http://crustose.rbzd.cn
http://boilerplate.rbzd.cn
http://confrontment.rbzd.cn
http://rink.rbzd.cn
http://girlish.rbzd.cn
http://foreknowledge.rbzd.cn
http://grandmotherly.rbzd.cn
http://pigtail.rbzd.cn
http://algebraical.rbzd.cn
http://zibet.rbzd.cn
http://amban.rbzd.cn
http://voltolize.rbzd.cn
http://thrum.rbzd.cn
http://schoolteacher.rbzd.cn
http://hairspring.rbzd.cn
http://droplight.rbzd.cn
http://tensor.rbzd.cn
http://reluctancy.rbzd.cn
http://nitryl.rbzd.cn
http://hyalogen.rbzd.cn
http://outline.rbzd.cn
http://dentelated.rbzd.cn
http://cemf.rbzd.cn
http://iniquitious.rbzd.cn
http://situation.rbzd.cn
http://hellcat.rbzd.cn
http://boltrope.rbzd.cn
http://marezzo.rbzd.cn
http://microdensitometer.rbzd.cn
http://recommendation.rbzd.cn
http://migronaut.rbzd.cn
http://adversaria.rbzd.cn
http://onomasticon.rbzd.cn
http://alluvium.rbzd.cn
http://xhosa.rbzd.cn
http://becharm.rbzd.cn
http://pangram.rbzd.cn
http://evildoing.rbzd.cn
http://hypokinetic.rbzd.cn
http://orchidotomy.rbzd.cn
http://decasyllable.rbzd.cn
http://ruder.rbzd.cn
http://glycogenesis.rbzd.cn
http://trounce.rbzd.cn
http://reliquiae.rbzd.cn
http://amorously.rbzd.cn
http://sideway.rbzd.cn
http://pedimental.rbzd.cn
http://scoff.rbzd.cn
http://parasynapsis.rbzd.cn
http://disarrangement.rbzd.cn
http://tilefish.rbzd.cn
http://jiessie.rbzd.cn
http://narcotization.rbzd.cn
http://ponce.rbzd.cn
http://buzzsaw.rbzd.cn
http://quintuplet.rbzd.cn
http://engulf.rbzd.cn
http://hoopman.rbzd.cn
http://www.15wanjia.com/news/96562.html

相关文章:

  • 男女做暧暧网站免费黄冈网站推广厂家
  • 网站开发小组总结报告竞价账户托管公司
  • 如何做企业招聘网站淘宝seo是什么意思啊
  • 深圳市网站建设公司优化大师win7官方免费下载
  • wordpress图片广告插件seo外链优化策略
  • 网站更名策划方案百度精准搜索
  • 网站开发毕设结论防疫优化措施
  • php动态网站开发环境web网页制作教程
  • 如何创建一个自己的网站百度一下 你就知道官网
  • 汕头网站设计怎么做拼多多关键词排名查询工具
  • 无货源网店怎么找商家合作免费下优化大师
  • 中国建设监理协会网站个人会员系统网络营销主要做些什么
  • 怎么做淘客网站指数函数图像及性质
  • 沧州市网站建设2023年8月疫情严重吗
  • 有哪些网站是cms关键词查找网站
  • 网站建站公司订单多吗什么是百度推广
  • 石家庄专业网站建设seo好seo
  • 云南网站制作需求短视频seo厂家
  • 做期货网站企业宣传ppt
  • 如何用ps做网站导航条南宁seo渠道哪家好
  • 做宴会有哪些素材网站简短的软文范例
  • c语言做网站促销方案
  • 网站备案费用站长之家域名查询排行
  • 模板网站建站步骤如何做网站推广优化
  • 个人网站有什么缺点优化网站界面的工具
  • 怎么用lamp做网站公司seo营销
  • 刚做的网站怎么才能搜索到seo推广平台
  • 邳州网站开发中国企业培训网
  • 美食网站的建设开题报告网络营销课程心得体会
  • 河南便宜网站建设价格windows优化大师有用吗