react骨架屏自动生成_用纯 DOM 的方式结合 Puppeteer 自动生成网页骨架屏

本文介绍了一种用纯DOM结合Puppeteer自动生成React骨架屏的方法,以提高开发效率,优化用户体验。通过遍历DOM节点,计算元素大小和位置,生成颜色块作为骨架屏。Puppeteer提供运行环境,允许在不同页面和框架中通用,且生成的骨架屏体积小,适应性强,还支持自定义调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

骨架屏是在页面数据尚未加载完成前先给用户展示出页面的大致结构,直到请求数据返回后再显示真正的页面内容;随着单页应用( SPA )的越来越流行,单页应用的用户体验也越来越得到前端开发者的关注;为了优化用户体验,在数据到达用户之前,往往会在页面上加上 loading 的效果,而现在,越来越多的场景倾向于使用页面的骨架替代单一的 loading 效果;

为什么需要自动生成骨架屏?

提高效率,节约单独编写骨架屏代码的时间

替换原来单一的 loading 图片效果

可以优化用户体验,在页面数据尚未加载完成前先给用户展示出页面的大致结构,配合动画效果,给用户一种平滑切换的感觉

常见的方案:

手动编写骨架屏代码

通过预渲染手动书写的代码生成相应的骨架屏

比如:vue-skeleton-webpack-plugin

饿了么内部的生成骨架页面的工具

page-skeleton-webpack-plugin

a. 前两者的前提都是需要开发者自己编写骨架屏代码

b. 饿了么的做的比较强大了,还有 UI 界面专门调整骨架屏

对于复杂的页面也会有不尽如人意的地方

生成的骨架屏节点是基于页面本身的结构和 CSS,存在嵌套比较深的情况,体积不会太小

只支持 history 模式.

我们的方案是:用纯 DOM 的方式结合 Puppeteer 自动生成网页骨架屏

编写操作 DOM 的 Javascript 脚本

遍历可见区域可见的 DOM 节点

包括:非隐藏元素、宽高大于 0 的元素、非透明元素、内容不是空格的元素、位于浏览窗口可见区域内的元素

针对(背景)图片、文字、表单项、音频视频等区域,算出其所占区域的宽、高、距离视口的绝对距离等信息

对于符合生成条件的区域,一视同仁,生成相应区域的颜色块

“一视同仁”即对于符合条件的区域,不区分具体元素,不用考虑结构层级,不考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值