首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏快乐阿超

    虚拟列表

    分享一个vue虚拟列表的组件: https://github.com/tangbc/vue-virtual-scroll-list 官方文档: https://tangbc.github.io/vue-virtual-scroll-list

    42520编辑于 2022-08-21
  • 来自专栏Web技术学苑

    了解虚拟列表背后原理,轻松实现虚拟列表

    在项目中,大数据渲染常常遇到,比如umy-ui(ux-table)虚拟列表table组件,vue-virtual-scroller以及react-virtualized 这些优秀的插件快速满足业务需要 为了理解插件背后的原理机制,我们实现一个自己简易版的虚拟列表,希望在实际业务项目中能带来一些思考和帮助。 正文开始... 虚拟列表是什么 在大数据渲染中,选择一段可视区域显示对应数据。 本篇是非常简易的虚拟列表实现,了解虚拟列表背后的实现思想,更多可以参考vue-virtual-scroller[1]与react-virtualized[2]源码的实现,具体应用示例可以查看之前写的一篇偏应用的文章测试脚本把页面搞崩了 总结 了解虚拟列表到底是什么,在大数据渲染中,选择一段可视区域显示对应数据 实现虚拟列表的背后原理,最外层给定一个固定的高度,然后设置纵向Y轴滚动,然后每个元素的父级设置相对定位,设置真实展示数据的高度 8B%9F%E5%88%97%E8%A1%A8 [4] 如何实现一个高度自适应的虚拟列表: https://juejin.cn/post/6948011958075392036

    4.1K10编辑于 2022-07-28
  • 来自专栏各类技术文章~

    利用虚拟列表改造索引列表(IndexList)

    2018的提出问题,2019年官方给出了解决方案recycle-view微信小程序长列表卡顿,但是这个只能解决部分问题,对于嵌套数据可能并不能适配。而且内部实现也是按虚拟列表渲染的思路去操作的。 flex; flex-direction: column; align-items: center; justify-content: center; } </style> 复制代码 方案 采用虚拟列表 ,参考云中桥-「前端进阶」高性能渲染十万条数据(虚拟列表)的方案。 根据上面对虚拟列表的描述,编写了一个简单的虚拟列表,代码如下。 <template>

    <! 需要将原来单层结构改造成双层结构 偏移方案,transform 对 sticky 有冲突 index key的高度问题 可视区域多个 index list item 点击右侧Index Key跳转到指定位置 实现 通过上方虚拟列表代码进行后续的改造和实现

    1.9K00发布于 2021-10-19
  • 来自专栏前端西瓜哥的前端文章

    列表优化:用 React 实现虚拟列表

    这次我们来看看虚拟列表是什么玩意,并用 React 来实现两种虚拟列表组件。 虚拟列表,其实就是将一个原本需要全部列表项的渲染的长列表,改为只渲染可视区域内的列表项,但滚动效果还是要和渲染所有列表项的长列表一样。 虚拟列表的实现分两种,一种是列表项高度固定的情况,另一种是列表项高度动态的情况。 列表项高度固定 列表项高度固定的情况会简单很多,因为我们可以在渲染前就能知道任何一个列表项的位置。 虚拟列表组件通过 ref 提供了一个 resetHeight 方法来重置缓存的高度。 ,需要手动触发重置虚拟列表缓存的高度集合,建议宽度固定; 图片加载需要时间,尤其是图片多的情况下,会让一个列表项的高度不断变大,需要你手动触发重置虚拟列表高度。

    5.1K10编辑于 2022-08-18
  • 来自专栏start

    vue 虚拟列表的实现

    Vue 虚拟列表是一种用于优化大型列表的渲染性能的技术。它通过只渲染可见部分的列表项,以及通过动态添加和删除DOM元素的方式来减少DOM操作,从而提高应用程序的响应速度和性能。 Vue 虚拟列表的实现依赖于一些关键技术,包括虚拟滚动、缓存池和动态渲染。 虚拟滚动是 Vue 虚拟列表的核心技术之一。它通过仅在屏幕上显示可见部分的列表项,而不是整个列表来减少渲染所需的时间和资源。 缓存池的实现涉及到维护一个包含渲染过的列表项的列表,以及计算当前视图中需要渲染的列表项。 动态渲染是 Vue 虚拟列表的第三个关键技术。它通过动态添加和删除DOM元素来减少渲染所需的时间和资源。 我们还使用一个监听滚动事件的方法 onScroll 来更新可见区域的起始索引,从而更新视图中显示的列表项。 总之,Vue 虚拟列表是一种优化大型列表的渲染性能的技术。 在 Vue 中实现虚拟列表通常需要遵循一些步骤,如计算列表项的高度或宽度、计算屏幕可见区域的高度或宽度、计算当前视图中需要渲染的列表项、维护一个缓存池以及动态地添加和删除DOM元素。

    78110编辑于 2024-03-20
  • 来自专栏静之森

    虚拟列表与 Scroll Restoration

    虚拟列表是为了提高页面性能而出现的。我们知道,一个页面上的 DOM 树越复杂,节点越多性能越低,每次重排(reflow)的成本越高。于是,虚拟列表出现了。 渲染 50 个 Node,实际只渲染了可见部分的 Node 本篇文章不讨论如何实现一个虚拟列表,此类文章网上有很多。但是有关于回退页面无法回到虚拟列表上一次的位置的文章却很少。 (如果设置 history.scrollRestoration = 'auto',默认为 auto) 但是如果用了虚拟列表,这里的虚拟列表跟随 document 根节点(document.documentElement react-virtuoso 一种方式是,记录之前虚拟列表容器的高度,在回退回来之后先用之前记录的值去撑开整个容器高度,待虚拟列表加载后去除。 这样有个问题是虚拟列表无法知道当前的位置原来是什么内容,因为虚拟列表都是按照单个 Node 高度去计算的,整体高度是一个预估值,不能知道当前位置具体是什么。

    1.2K20编辑于 2021-12-28
  • 来自专栏采云轩

    IntersectionObserver实现虚拟列表初探

    IntersectionObserver实现虚拟列表初探 http://zoo.zhengcaiyun.cn/blog/article/intersectionobserver 前言 前端开发中经常会遇到大数据量列表展示的性能问题 解决这类问题的方案也有很多,使用虚拟列表展示是一个比较常见的解决方案。今天我们来介绍如何使用 IntersectionObserver 这个 API 来自定义实现虚拟列表。 传统列表 在未使用虚拟列表之前,传统列表很难处理大量数据的渲染问题,常出现以下情况: 列表数据渲染时间长甚至出现白屏 列表交互卡顿 为了解决该类问题,我们可以选用虚拟列表来承载大量数据的渲染,增强用户体验 虚拟列表 在介绍 IntersectionObserver 之前,我们先简单介绍下虚拟列表概念。前面已经提到,页面的性能问题是由于太多数据渲染展示引起的。 结语 虚拟列表是解决大数据量列表渲染的有效方案。对于实际业务中对老版本浏览器兼容性要求不高的场景,大家可以考虑使用 IntersectionObserver,可以方便地实现自定义的虚拟列表

    1.9K30编辑于 2022-12-01
  • 来自专栏code秘密花园

    前端虚拟列表的实现原理

    于是心血来潮决定从零自己实现一个虚拟滚动列表来优化一下整体的体验。 当用户当前的滚动offset未触发下标更新时,则因为本身phantom的长度关系让虚拟列表拥有和普通列表一样的滚动能力。 优化: 对于上边我们实现的虚拟列表,大家不难发现一但进行了快速滑动就会出现列表闪烁的现象/来不及渲染、空白的现象。还记得我们一开始说的 **渲染用户最大可见条数+“BufferSize” 么? 现在我们已经实现了“定高”元素的虚拟列表的实现,那么如果说碰到了高度不固定的超长列表的业务场景呢? 一般碰到不定高列表元素时有三种虚拟列表实现方式: 对输入数据进行更改,传入每一个元素对应的高度 dynamicHeight[i] = x x 为元素i 的行高 需要实现知道每一个元素的高度(不切实际)

    2.1K40发布于 2021-04-23
  • 来自专栏携程技术

    干货 | Taro虚拟列表最佳实践

    使用效果:团队第一时间尝试了虚拟列表,但是效果并不是非常理想,主要问题有以下几点: 由于我们的列表内容不是所有的Item都是等高的,所以虚拟列表每次渲染的时候都会去动态计算每个Item的高度,造成列表高度变换抖动 Item高度,计算量太大,也会阻碍页面渲染; 基于以上问题,我们团队最终出品了更佳(没有最佳,只有更佳)虚拟列表方案。 主要看一下虚拟列表节点组成: ? 5.2 前期思考 1)继续采用监听可视区域,只渲染可视区域内的节点。 2)由于Item不等高问题,需要动态计算每个Item的高度,效果不佳,我们放弃。 性能提升总结 可以看出在使用虚拟列表对页面进行优化之后,页面总的渲染性能会有一个质的提升,页面列表渲染速度提升了将近45%,按钮点击响应速度提升了将近50%。 目前我们只是针对航班列表使用了虚拟列表进行优化,页面中还有一个比较损耗性能的点是上方的日历列表,后期我们将把日历列表也改成虚拟列表,相信性能会更进一步提升。

    2K50发布于 2021-07-22
  • 来自专栏Java架构师必看

    element-ui,table增加虚拟列表

    element-ui,table增加虚拟列表 强烈推介IDEA2020.2破解激活 参考文献https://juejin.im/entry/5aaf66f56fb9a028c71e403e 由于业务需要,当大批量的dom(10W个场景)展现在table中,会导致滚动条卡顿,因此需要开发一个虚拟列表的功能

    2.5K10发布于 2021-06-17
  • 来自专栏院长运维开发

    OpenStack查看虚拟机端口列表

    ', subnet_id='e97beba0-d8ae-4bc6-9497-abad9200cb60' ACTIVE 24ea5e26-95e6-4c9e-bd24-42335359a7c8 fa:16 -6e3c-4f97-89dc-404dae75aa0c fa:16:3e:6e:ac:fa ip_address='42.51.77.12', subnet_id='e97beba0-d8ae-4bc6 ', subnet_id='e97beba0-d8ae-4bc6-9497-abad9200cb60' ACTIVE 404d6133-0cce-4f07-aa27-04c90a6d0e37 fa:16 ' ACTIVE 97431fa6-6f8c-4df2-b90d-032b509f906f fa:16:3e:01:49:1e ip_address='42.51.77.21', subnet_id= ' ACTIVE af97265b-9dc5-482e-a4fc-dd705912f4b6 fa:16:3e:6d:64:68 ip_address='42.51.77.20', subnet_id=

    3.1K30发布于 2020-06-13
  • 来自专栏初见Linux

    6.列表样式-CSS基础

    一、列表项符号(list-style-type) 在HTML中,对于有序、无序列表列表项符号,都是使用type属性来定义。 1.定义列表项符号 无论有序、无序列表,都是使用list-style-type属性来定义列表项符号。 二、列表项图片(list-style-image) 在CSS中,我们通过list-style-image属性来定义列表项图片,用图片来代替列表项符号,这个我们会经常遇到。 1.定义列表项图片 (1)语法格式 list-style-image:url(图片路径); ① 说明 list-style-image属性实际上就是用图片替代列表项符号,而引用图片就需要给出图片的路径 列表项图片示例1.png 2.字体图标(iconfont)重点 (1)实际开发 在实际开发中,对于列表项图片一般都不会用list-style-image属性来实现,而是使用更为高级的字体图标(iconfont

    1.1K40发布于 2020-10-29
  • 来自专栏coding个人笔记

    用vue实现一个虚拟列表

    上次分享了超长列表分片加载的方式,这种方式现在一般不会使用,因为dom会变的无比庞大,页面会很卡,今天分享用vue实现一个虚拟列表的简易实现,本来是想用原生实现一个,后来觉得直接使用computed,简单一些 思路就是用vue的for循环渲染列表,自己手动加一个滚动条,然后通过监听scroll,算出应该显示到第几个,通过计算属性截取显示的数据,直接上代码: <! for (let i = 0; i < 1000000; i++) { this.list.push('列表' + i) 其实原理很简单,把代码跑起来,输出看看这些数据就很容易就搞懂虚拟列表的实现了。但这只是实现,要想做的更好就很难了。 要是想做高度不固定的,那就更难了,要缓存每个列表的高度,然后用一些算法去计算滚动过程的高度。

    1.4K10发布于 2020-06-04
  • 来自专栏技术杂记

    Linux 初始化检查列表6

    系统的默认属性是会将最近的读请求时间记录到文件系统的元数据里,这样一次读请求会产生至少一次写请求,在很多场景下,这种特性没有应用价值,所以可以关掉来减少IO开销

    96920编辑于 2021-11-26
  • 来自专栏Java架构师必看

    CentOS 6虚拟机安装

    这篇博客已经被合并到这里了: 虚拟机安装CentOS以及SecureCRT设置【完美无错版】 ====================== 下面不用看了,看上面即可 =============== technetwork/server-storage/virtualbox/downloads/index.html 不过有个单独域名主页:http://www.virtualbox.org/ 2.下载CentOS6镜像 如果觉得虚拟机分辨率很小,那么可以点击“设备”--“安装增强功能”解决。 USB和光驱 在虚拟主机VirtualBox的菜单中选择设备,分配USB设备,找到对应的USB接口即可,安装好驱动。 ======================== VirtualBox虚拟机和主机拷贝文件 主机windows要和VirtualBox拷贝文件,需要设用数据空间功能。

    68320发布于 2021-03-22
  • 来自专栏CMS建站教程

    CentOS 6 配置FTP虚拟用户

    .* -rw-r--r-- 1 root root 12288 6月 9 08:29 user.db ##用户数据库文件 -rw-r--r-- 1 root root 18 6月 9 08:21 user.txt [root@c vsftpd]# chmod 600 user.* 2、创建vsftpd用于存储文件的目录以及虚拟用户映射的系统本地用户 [root@c vsftpd]# useradd 参数 作用 anonymous_enable=NO 禁止匿名开放模式 local_enable=YES 允许本地用户模式 guest_enable=YES 开启虚拟用户模式 guest_username =virtual 指定虚拟用户账户 pam_service_name=vsftpd.u 指定PAM文件 user_config_dir=/etc/vsftpd/vuser 虚拟用户配置文件存放的目录 设置开机自启 [root@c ~]# service vsftpd start 为 vsftpd 启动 vsftpd:       [确定] [root@c ~]# chkconfig vsftpd on 6

    2.6K60编辑于 2022-03-07
  • 来自专栏日常活动篇

    Vue3 列表渲染性能优化实战:基于 CodeBuddy 的虚拟列表方案

    一、协作背景与性能挑战 在我们航道管理的 Vue3 项目中,航标数据列表页是核心交互场景。 虚拟列表方案生成 CodeBuddy 推荐使用 vue-virtual-scroller 并生成集成代码: # 安装依赖 npm install vue-virtual-scroller <template -- 加载动画 --> <el-skeleton v-if="isLoading" :rows="<em>6</em>" animated /> <RecycleScroller v-else ${item.id}`, () => { return item.price * (1 - item.discount) }) } </script> 四、最终优化效果验证 关键改进点: 虚拟滚动技术将渲染节点控制在视窗范围内 过程中,采用渐进式优化策略第一阶段:快速解决DOM爆炸问题(虚拟列表)第二阶段:优化数据加载流程(分页+骨架屏)第三阶段:微优化计算属性(缓存策略)。

    57210编辑于 2025-09-26
  • 来自专栏掘金安东尼

    Vue 虚拟列表,纵享丝滑【实践篇】

    本篇讨论基于 Vue.js 的列表无限下拉实践。 我们的目标就是:让列表下拉纵享丝滑,而不是像以往的下拉就 loading 等待的体验。 -- 虚拟列表 --> <virtual-list :data-key="'pageid'" :data-sources="results" :data-component -- loading --> <loader v-if="loading" />

    </template> 其中核心当然是virtual-list组件啦~ 这里的虚拟列表,我们用到一个三方库 列表分为可见区域和缓冲区域,超出这个范围的列表 DOM 都将被删除。 好啦,准备工作已就绪,Let`s get it! 这样动态的处理列表的确是编程人员的一种智慧和用心。 你可以把 项目 克隆到本地再体会一下。以上便是本次分享~ 撰文不易,点赞鼓励!

    1.6K10编辑于 2022-09-22
  • 来自专栏仁扬笔记

    Redis的设计与实现(6)-压缩列表

    压缩列表 (ziplist) 是列表键和哈希键的底层实现之一. 当一个列表键只包含少量列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表来做列表键的底层实现. _t 4 字节 记录整个压缩列表占用的内存字节数: 在对压缩列表进行内存重分配, 或者计算 zlend 的位置时使用. zltail uint32_t 4 字节 记录压缩列表表尾节点距离压缩列表的起始地址有多少字节 : 长度小于等于 63 (2^{6}-1)字节的字节数组; 长度小于等于 16383 (2^{14}-1) 字节的字节数组; 长度小于等于 4294967295 (2^{32}-1)字节的字节数组; 而整数值则可以是以下六种长度的其中一种 总结 压缩列表是一种为节约内存而开发的顺序型数据结构. 压缩列表被用作列表键和哈希键的底层实现之一. 压缩列表可以包含多个节点,每个节点可以保存一个字节数组或者整数值.

    46500编辑于 2023-06-27
  • 来自专栏Python

    6-3、Python 数据类型-列表

    6-3、Python 数据类型-列表列表列表介绍列表是Python中最基本也是最常用的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排在的位置。 len(list)返回列表元素个数,也就是获取列表长度 max(list)返回列表元素最大值 min(list)返回列表元素最小值 list(seq)将序列转换为列表>>> list1= [1,2,3,4,5,6 统计某个元素在列表中出现的次数>>> list6 = [1,2,3,4,5,77,5,5]>>> list6.count(5) # 统计某个元素在列表中出现的次数3>>> extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)>>> list6 = [1,2,3,4,5,77,5,5]>>> list6.extend(['a','b'])>>> list6[1 []>>> list6['b', 'a', 5, 5, 77, 4, 'A', 3, 2, 1]>>> del list6[:] # 清空列表>>> list6[]>>> del list6 # 删除列表

    38500编辑于 2023-11-08
  • 领券