前端要呈现百万数据,这个需求是很少见的,但是展示千条稍微复杂点的数据,这种需求还是比较常见,只要内存够,javascript 肯定是吃得消的,计算几千上万条数据,js 效率根本不在话下,但是 DOM 的渲染浏览器扛不住,CPU 稍微搓点的电脑必然会卡爆。
首先,这种情况很少见。如果要在前端呈现大量的数据,一般的策略就是分页。虽然这么说,但是如果展示上百条数据,图片资源消耗,也会让页面发生卡顿。
JavaScript效率
DOM渲染卡顿
DOM渲染一直困扰前端的难题,由于设备参差不齐,CPU性能严重影响了页面的渲染能力。
方案
1 | /==============> box |
1 | function VirtualList(config) { |
初始化
1 | var List = new VirtualList({ |
计算
容器何以显示的List个数
1 | var screenItemsLen = Math.ceil(config.height / itemHeight) |
缓存的List Div的数码
1 | this.cachedItemsLen = screenItemsLen * 3 |
容器的整体高度
1 | itemHeight * this.totalRows |
render() 计算需要展示的内容,即将替换的内容
createRow() 创建List
createContainer() 创建容器
createScroller() 创建将容器撑起div