博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈虚拟DOM
阅读量:5887 次
发布时间:2019-06-19

本文共 781 字,大约阅读时间需要 2 分钟。

1. 什么是Virtual DOM?

虚拟DOM是指用JS模拟DOM结构。本质上来讲虚拟DOM是一个真实的JS对象,并且至少包含三个属性:tag(html标签),props(标签的属性,如class),children(子元素对象)。

2. 为什么需要Virtual DOM?

  我们应该知道,用JS操作dom会引起回流和重绘,严重影响性能。但在项目中经常会有增删改查的需求,DOM结构会发生改变。

a.最简单的做法:通过JS操作DOM。该方法的缺点:随这应用的复杂度提升,代码变的难以维护,且性能不好,每次dom操作可能都会引起浏览器的回流和重绘。

b.MVVM模式,只要在模版中声明视图组件是和什么状态进行绑定的,双向绑定引擎就会在状态更新的时候自动更新视图,MVVM 可以能很好的降低维护状态以及减少视图的复杂程度。

还有一个非常直观的方法,可以大大降低视图更新的操作。一旦状态发生了变化,就用模版引擎重新渲染整个视图,然后用新的视图更换掉旧的视图。在 JS 里面更新状态,但是页面更新就不用手动操作 DOM 了,直接把整个表格用模版引擎重新渲染一遍,然后设置一下 innerHTML 。此方法会导致 DOM 操作变慢,因为任何的状态变更都要重新构建整个 DOM。

  JS操作真实DOM速度很慢,而操作JS对象非常快,我们就可以用 js对象表示的树结构来构建一个真正的 DOM 。当状态变更时,重新渲染这个 JS的对象结构,实现视图的变更,结构根据变更的地方重新渲染。这就是虚拟 DOM 算法。

通过虚拟DOM的比较,我们可以将多个操作合并成一个批量的操作,并且只更新有差异的部分,从而减少dom重排的次数,进而缩短了生成渲染树和绘制所花的时间。

转载于:https://www.cnblogs.com/thinkwea/p/11001048.html

你可能感兴趣的文章
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
2010技术应用计划
查看>>
Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现...
查看>>
JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)...
查看>>
【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>
SQL语句的执行过程
查看>>
详解Linux中Load average负载
查看>>
PHP遍历文件夹及子文件夹所有文件
查看>>
WinForm程序中两份mdf文件问题的解决
查看>>
程序计数器、反汇编工具
查看>>
Android N: jack server failed
查看>>
如何将lotus 通讯簿导入到outlook 2003中
查看>>
WinForm 应用程序中开启新的进程及控制
查看>>
js replace,正则截取字符串内容
查看>>
Thinkphp5笔记三:创建基类
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
Android中EditText,Button等控件的设置
查看>>
TextKit简单示例
查看>>
网格最短路径算法(Dijkstra & Fast Marching)(转)
查看>>