处理10-100万的DOM元素渲染
其实早就听说过类似的问题(基本上我觉得大部分的开发不会遇到类似的问题,因为多数的人都遇不到这种批量渲染的场景!!!)
文章目录
吐槽+思考
1.吐槽 :
提示:下面是我的思考方向和现在的一些实践方案
其实写出来的基本都是有一定成效的,要不然也不会发出来,啊哈哈哈哈哈
遇到这种问题的时候,大多数人张嘴就是使用虚拟列表
来处理啊
此时我听到上面那句话后的心里就是下面这张图
其实第一次听到
一次渲染10-100万数据,你有什么方案
,我也有一点懵B。
(什么场景会遇到一次性渲染这么多元素,硬要渲染这么多数据那出方案的人不就是
傻××)
2.方案 :(思考内容+实践方向)
- 尝试一次性渲染
10万条数据
浏览器 :不会写代码就别写
- 尝试借助浏览器的虚拟DOM模块进行批量DOM的拆分
(会阻塞主线程)
- 借助浏览器的多线程(Worker) 进行DOM的分段插入 (小有成就)
- 借助动画渲染渲染函数(RAF),进行DOM的渲染 (数据量小还可以,一旦数据量增大,内存使用率变的太高了)
3.思考:(下面性能图分别对应的是那种方案)
一、模拟原始的创建DOM的操作(10万-50万)
1. 直接渲染大量DOM,代码如下
HTML结构如下:
<body>
<div class="content">
<div class="btnText">1231313</div>
<button>可以操作页面吗</button>
</div>
</body>
JavaScript代码如下:
const num = 500000 // 50万
const bodyDom = document.querySelector(".content")
const btn = document.querySelector('button')
// 下面是直接诶插入到body中
for (let index = 0; index < num; index++) {
const element1 = document.createElement("div")
element1.innerText=index
bodyDom.appendChild(element1)
}
2. 如下图: Chrome崩溃了(50万个div插入)
如果你要一个一个渲染50万个div,浏览器估计是下面这个心理状态:
会不会开发啊!!!!!
浏览器崩了
(刚开始还是很倔强的,能渲染,刷新几次就废了)
还给你搞出来一些额外的
Buff
二、
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。