对react vd 性能的理解
相信大家都知道react vd的性能是很好的,速度挺快的,真实dom操作很慢的,但是结果完全相反;
后来我就做了个测试,从两个方面去测试,在页面初始渲染1w条数据,react渲染耗时超过了1秒 在1200毫秒左右,而原生使用拼接字符串然后使用innerHTML进行添加到文档,耗时几十毫秒 在35毫秒左右;仅仅也就是一个循环的耗时;
另外一个测试是在上面的数据渲染完后,给每一项绑定单机事件,然后事件触发后更改当前的标题内容,react耗时 300毫秒左右,如果我用原声的去更改就是直接修改当元素的标题了,耗时可想而知了,基本可以忽略了吧。
当前react这个的耗时结果是可以进行优化的,然后我提出一个子组件,然后在子组件上使用了shouldComponentUpdate 方法进行了优化处理,只在标题改变的时候才进行渲染子组件,测试后耗时有所提升 耗时为 250毫秒左右,提升了60-80毫秒;
出现这样的结果是为什么呢?
首先react更新dom是通过操作数据改变的,然后进行vd的diff后在进行更新到页面,而原生的操作是直接操作的节点,速度到底哪个快很明确了吧;
那react的使用到底解决了什么问题呢?
react最直接的就是帮我们屏蔽了对dom的操作,让我们用组件化和声明的方式去编码,让我们的代码更加的容易维护。而如果我们用原生代码去操作dom,如果代码不进行优化和处理那性能也很是问题,而且后期的维护的成本也是很大的,
项目慢慢发展变的很大,性能问题会逐步显现,但是每个点都去优化又不是那么现实。而react框架的特性是数据驱动视图,底层已经对性能做了处理,在不需要我们进行手动处理的情况下依然可以给我们一种差不多的性能,是能被用户接受的性能,当然我上面的测试是一种特例,
实际中也不会有一次渲染1w条数据的,框架解决的最大问题就是后期的维护的问题,同时也提供了过的去的性能,不然这么多大厂也不会使用他了。
其实要学习react 如果对框架有更多的了解的话,可能后面的学习会顺畅,很多谜团都会自然解开。
对react vd 性能的理解的更多相关文章
- 如何对react进行性能优化
React本身就非常关注性能,其提供的虚拟DOM搭配上DIff算法,实现对DOM操作最小粒度的改变也是非常高效的,然而其组件的渲染机制,也决定了在对组件更新时还可以进行更细致的优化. react组件 ...
- React 组件性能优化
React组件性能优化 前言 众所周知,浏览器的重绘和重排版(reflows & repaints)(DOM操作都会引起)才是导致网页性能问题的关键.而React虚拟DOM的目的就是为了减少浏 ...
- react中性能优化的点
react提升代码性能的点 1.绑定如果改变作用域点话放在constructor里面做,这样可以保证整个程序的作用域绑定操作只会执行一次,而且避免子组件的无谓渲染. 2.内置的setState是个异步 ...
- React Native 性能优化指南【全网最全,值得收藏】
2020 年谈 React Native,在日新月异的前端圈,可能算比较另类了.文章动笔之前我也犹豫过,但是想到写技术文章又不是赶时髦,啥新潮写啥,所以还是动笔写了这篇 React Native 性能 ...
- React中JSX的理解
React中JSX的理解 JSX是快速生成react元素的一种语法,实际是React.createElement(component, props, ...children)的语法糖,同时JSX也是J ...
- 【react】---pureComponent的理解
一.pureComponent的理解 pureComponent表示一个纯组件,可以用来优化react程序.减少render函数渲染的次数.提高性能 pureComponent进行的是浅比较,也就是 ...
- 看Facebook是如何优化React Native性能
原文出处: facebook 译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门 React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型, ...
- React 组件性能优化探索实践
转自:http://www.tuicool.com/articles/Ar6Zruq React本身就非常关注性能,其提供的虚拟DOM搭配上Diff算法,实现对DOM操作最小粒度的改变也是非常的高效. ...
- React组件性能优化
转自:https://segmentfault.com/a/1190000006100489 React: 一个用于构建用户界面的JAVASCRIPT库. React仅仅专注于UI层:它使用虚拟DOM ...
随机推荐
- 小聊outline和border
border与outline: border属性: border-width.border-style.border-color 其中border-style可以为none或hidden outlin ...
- java中\r ,\n,\t等的含义
\t 相当于tab,缩进,制表符\n NewLine 换行 \f 换页符 \r 回车 \" 转义 “\\ 转义 \
- 安装OFFICE2016错误代码0-1018(0)的解决方案 和激活方案
一.安装OFFICE2016错误代码0-1018(0)的解决方案 下面方法亲测有效:Step 1. Go to C:\Program Files\Common Files\microsoft shar ...
- 奇妙的 CSS几何图形
三角形:通常会使用透明的border模拟出一个三角形:▲ .traingle { width:; height:; border-left: 50px solid transparent; borde ...
- P1110 [ZJOI2007]报表统计 (multiset)
[题目链接] https://www.luogu.org/problemnew/show/P1110 有以下三种操作: INSERT i k:在原数列的第i个元素后面添加一个新元素k:如果原数列的第i ...
- 2015苏州大学ACM-ICPC集训队选拔赛(1) 1008
猪猪过河 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submissi ...
- Java基础05-运算符
1.赋值运算符:= 2.算术运算符: (1)一元运算符: i++;先使用后自身加1 int i=1;int b=i+1; b=1 i=2 ++i;先对自身加1后使用 int j=1;int b=+ ...
- 性能测试工具Jmeter04-脚本录制
Jmeter脚本录制:不推荐使用,这里就不介绍了 Badboy脚本录制 下载地址:http://www.badboy.com.au Badboy是一个强大的工具,旨在帮助测试和开发复杂的动态应用.Ba ...
- [转]jQuery调用ASPX返回json
本文转自:http://www.cnblogs.com/fire-phoenix/archive/2009/11/13/1614146.html 本文介绍如何在ASP.NET(ASP.NET/AJAX ...
- (转)cut命令详解
Linux:cut命令详解 cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参 ...