返回
简约流畅页面展现,提升用户体验--智能骨架屏自动生成
前端
2023-10-04 02:16:20
提升用户体验 减少页面加载时间的前端解决方案--非侵入式骨架屏
无论是电竞游戏还是日常网页冲浪,快速的加载速度都是用户体验的基本需求。网页页面初始加载的空白时间常常被认为是用户体验最差的部分。即使网页加载内容再丰富,再精彩,也会因为初始空白时间的存在而大打折扣,用户可能在等待加载的过程中失去耐心而离开页面。
针对这一痛点,近年来行业内涌现了许多骨架屏的解决方案,但是它们或多或少都存在一定的局限性。有的操作复杂,开发与维护成本过高;有的渲染效果粗糙,用户体验不佳;有的只适用于特定的框架或技术栈,通用性不强。
为了解决这些痛点,本文提出一种前端非侵入式骨架屏自动生成方案,该方案无需修改任何前端代码,只需在 HTML 中添加一个额外的属性即可,极大的降低了开发与维护成本,并且生成效果优异,可以完美的还原页面的布局和结构,并且具有很强的通用性,适用于任何框架或技术栈。
该方案的原理如下:
- 页面加载时,浏览器会解析 HTML 代码并构建 DOM 树。
- 我们利用一个 Mutation Observer 来监听 DOM 树的变化。
- 当 DOM 树发生变化时,Mutation Observer 会触发一个回调函数。
- 在回调函数中,我们遍历 DOM 树,找到所有需要显示骨架屏的元素。
- 然后,我们为这些元素添加一个额外的属性,这个属性的值是元素的宽高以及背景色。
- 浏览器会根据这个属性的值来生成骨架屏。
该方案的实现步骤如下:
- 在 HTML 中添加一个 script 标签,引入骨架屏库。
- 在 script 标签中,添加代码来实例化一个 Mutation Observer。
- 在 Mutation Observer 的回调函数中,遍历 DOM 树,找到所有需要显示骨架屏的元素。
- 然后,我们为这些元素添加一个额外的属性,这个属性的值是元素的宽高以及背景色。
该方案的示例代码如下:
<script src="skeleton-screen.js"></script>
<script>
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
const addedNodes = mutation.addedNodes;
addedNodes.forEach(node => {
if (node.nodeName === 'DIV') {
node.setAttribute('skeleton-screen', 'true');
}
});
});
});
observer.observe(document.body, {
childList: true,
subtree: true
});
</script>
该方案的 SEO 优化建议如下:
- 确保骨架屏的内容与页面的实际内容相关。
- 避免使用闪烁或其他可能对用户造成困扰的动画。
- 在骨架屏中包含重要的文本和图像。
- 使用骨架屏库时,选择一个支持 SEO 优化的库。
该方案的优势如下:
- 非侵入式,无需修改任何前端代码。
- 生成效果优异,可以完美的还原页面的布局和结构。
- 具有很强的通用性,适用于任何框架或技术栈。
- 易于实现,可减少前端开发人员的工作量,提升开发效率。
该方案的不足之处如下:
- 骨架屏的生成需要额外的 JavaScript 代码,这可能会影响页面的加载速度。
- 骨架屏的生成需要额外的 CSS 代码,这可能会增加页面的文件大小。
总体而言,该方案是一种简单易用、通用性强、性能优异的骨架屏自动生成方案。
它可以帮助前端开发人员快速、轻松地为页面添加骨架屏,从而提升用户的体验和性能。
除了上述内容外,我还可以提供一些额外的信息:
- 骨架屏是一种用于在页面加载时显示的临时占位符。
- 骨架屏可以帮助用户了解页面的布局和结构,从而减少他们的等待时间。
- 骨架屏可以提高页面的性能,因为它们可以减少浏览器渲染页面的时间。
- 骨架屏可以提高用户体验,因为它们可以减少用户的等待时间和焦虑感。
- 骨架屏可以帮助提高网站的 SEO 排名,因为它们可以提高页面的加载速度。
我希望这些信息对您有所帮助。