相信大家都知道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. IE下 checkbox、radio等标签的label中的img点击无效(点击不能选中)问题解决

    类似以下代码,点击图片不能选中checkbox <input id="dw_1" name="shape[]" value="Round&quo ...

  2. C语言中的头文件

    1.头文件#include <> :表示引用标准库头文件,编译器会从系统配置的库环境中去寻找 2.头文件#include "":一般表示用户自己定义使用的头文件,编译器 ...

  3. Codeforces Round #520 (Div. 2) B math(素数因子的应用)

    题意: 给出一个n ; 有两个操作: 1,mul A   ,   n=n*A   : 2,sqrt()  ,  n=sqrt(n)  开更出来必须是整数 : 求出经过这些操作后得出的最小  n , 和 ...

  4. django 请求体和请求体相关知识

    请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: django 如果发送post请求,或者表单提交数据.如果不设置enctype属性. 就会以appli ...

  5. 用sphinx-doc优雅的写文档

    Sphinx 是一个工具,它使得创建一个智能而美丽的文档变得简单.作者Georg Brandl,基于BSD许可证. 起初为写 Python 文档而诞生的 Sphinx,支持为各种语言生成软件开发文档. ...

  6. my11_mysql事务隔离

    概述 ************************************************ Mysql有四个事务隔离级别,默认隔离级别为RR,开启一个事务可以使用 START TRANSA ...

  7. 性能测试工具LoadRunner22-LR之Analysis 简介

    Analysis功能: 对测试运行结果进行查看.分析和比较 导入分析文件 注意LoadRunner Results文件和Analysis Session Files的区别.LoadRunner Res ...

  8. JavaScript Date学习实例:获取3分钟前的时间“hhmmss”格式

    上一篇博客分享了Date对象的理论知识,今天正好看到一段相关的代码,可以继续深化,通过实例加强复习Date 题目:获取3分钟前的时间,并且显示格式是hhmmss 以下是看到的代码 var time=n ...

  9. SSH密钥登录原理

    Client 发送请求 login 请求 --> Server 接受请求 --> 根据 authorized_key 文件中的对应 Client 的 ip 地址的公钥对一串随机数进行加密 ...

  10. etc

    小小的注意点们 交换两个变量的值时, 如果使用异或运算符, 需要先判断两个数是否相等 if (a == b) return; a ^= b; b = a ^ b; a ^= b; 取一个数组的中间位置 ...