相信大家都知道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 性能的理解的更多相关文章

  1. 如何对react进行性能优化

    React本身就非常关注性能,其提供的虚拟DOM搭配上DIff算法,实现对DOM操作最小粒度的改变也是非常高效的,然而其组件的渲染机制,也决定了在对组件更新时还可以进行更细致的优化.  react组件 ...

  2. React 组件性能优化

    React组件性能优化 前言 众所周知,浏览器的重绘和重排版(reflows & repaints)(DOM操作都会引起)才是导致网页性能问题的关键.而React虚拟DOM的目的就是为了减少浏 ...

  3. react中性能优化的点

    react提升代码性能的点 1.绑定如果改变作用域点话放在constructor里面做,这样可以保证整个程序的作用域绑定操作只会执行一次,而且避免子组件的无谓渲染. 2.内置的setState是个异步 ...

  4. React Native 性能优化指南【全网最全,值得收藏】

    2020 年谈 React Native,在日新月异的前端圈,可能算比较另类了.文章动笔之前我也犹豫过,但是想到写技术文章又不是赶时髦,啥新潮写啥,所以还是动笔写了这篇 React Native 性能 ...

  5. React中JSX的理解

    React中JSX的理解 JSX是快速生成react元素的一种语法,实际是React.createElement(component, props, ...children)的语法糖,同时JSX也是J ...

  6. 【react】---pureComponent的理解

    一.pureComponent的理解  pureComponent表示一个纯组件,可以用来优化react程序.减少render函数渲染的次数.提高性能 pureComponent进行的是浅比较,也就是 ...

  7. 看Facebook是如何优化React Native性能

    原文出处: facebook   译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门 React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型, ...

  8. React 组件性能优化探索实践

    转自:http://www.tuicool.com/articles/Ar6Zruq React本身就非常关注性能,其提供的虚拟DOM搭配上Diff算法,实现对DOM操作最小粒度的改变也是非常的高效. ...

  9. React组件性能优化

    转自:https://segmentfault.com/a/1190000006100489 React: 一个用于构建用户界面的JAVASCRIPT库. React仅仅专注于UI层:它使用虚拟DOM ...

随机推荐

  1. matplotlib学习笔记(三)

    柱状图 柱状图用其每根柱子的长度表示值的大小,它们通常用来比较两组或多组值.下面的程序从文件中读入中国人口的年龄分布数据,并使用柱状图比较男性和女性的年龄分布. import numpy as np ...

  2. [Android]Android开发艺术探索第1章笔记

    1.1 Activity 的生命周期全面分析 1.1.1 典型情况下的生命周期分析 onPause: 正在停止,正常情况下紧接着 onStop 就会被调用,然后新的 Activity 执行 onRes ...

  3. javascript中的一元操作符

    题目如下: var s1 = "01"; var s2 = "1.1"; var s3 = "z"; var b = false; var ...

  4. SQL Server 清理日志

    USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 要清理的数据库名称 ...

  5. jquery插件分页

    收藏地址: http://www.jq22.com/yanshi5697

  6. docker(3)docker下的centos7下安装jdk

    1.将jdk-8u65-linux-x64.tar.gz文件传到docker的宿主机上 rz 2.将宿主机上的jdk-8u65-linux-x64.tar.gz复制到centos7的容器下 #在宿主机 ...

  7. inode与block知识总结

    inode概述:硬盘要分区,然后格式化,创建文件系统在每个Linux存储设备的分区被格式化为ext3文件系统后一般有两个部分:    第一部分Inode:存储这些数据的属性信息(大小,属主,归属的用户 ...

  8. linux的shell脚本

    一.遇到的问题: 1.在Documents/shell_Document的文件夹下创建第一个脚本. 但是发现在图形化界面不能执行shell脚本.只能到命令行模式下才能执行.感觉太麻烦,我的虚拟机从图形 ...

  9. 时间戳date 命令

    时间戳date  命令 [chenxiaohao@iZbp1c0q444r0hp2gq8lhmZ server]$ echo $(date +%Y%m%d)  ——————>今天 2018032 ...

  10. AVplayer搭建ftp共享PC端

    1.安装FTP服务 2.关闭防火墙 3.添加FTP站点 设置ip时,需要查询本机的ip 本机测试 4.iphone安装AVPlayer,并设置