【dart-skeleton】自动生成骨架屏项目

简介: 【dart-skeleton】自动生成骨架屏项目

前言:


骨架屏是在数据加载前用来展示给用户页面结构,经常由灰色占位图来体现,在数据加载完毕后自动隐藏。通常比页面白屏,闪烁或转圈的小菊花带给用户的感受要更加舒服。由于初次接触这块的内容,所以这个项目是在dps项目的基础上重写的一个Ts版本,目的是学习思路方便后续改造。


项目结构图:


项目由如图三块内容组成分别是:脚本,逻辑,CLI。1.png


🥝脚本:

主要的功能就是对目标页面进行分析对指定的元素进行绘制为灰色块,并按条件跳过指定的干扰元素。因为我们的使用是在浏览器中所以在编译Ts的代码的时候我们将targetmodule分别设置成了es5es2015,为了方便逻辑块的调用我们没有导出函数而是直接挂在到window对象上。调试本地html文件的话可以直接将编译后的Js引入页面,当我们需要调试在线的一些页面的话可以在浏览器的开发者工具=>Sources=>Snippets中新建一个片段将我们编译后的Js放进去,直接Run来执行。


🥦逻辑:

主要的功能是使用**Puppeteer**来加载目标页面,并执行我们第一阶段调试的脚本,最终导出骨架片段并插入目标页面。逻辑块的代码由于我们后续想通过CLI的方式在Node环境执行,所以编译成了CommonJS模块。需要特殊记录一下的是脚本注入后的执行函数,如下:

// 执行脚本获取生成的html片段
html = await page.evaluate((res) => {
  return window.evalDOMScripts.apply(window, res);
}, opts);
复制代码


🍦CLI:

这块的功能相对简单,主要是通过命令行的方式来收集用户的输入信息,构建初始化配置文件和执行逻辑部分导出的启动函数。


使用说明:


🍕构建说明:

  1. 全局安装Typescript,调试代码推荐一起安装ts-node:yarn global add typescript ts-node
  2. 安装项目配置的依赖:yarn


🍿脚本&源码编译:

  1. 编译脚本文件:yarn build:script
  2. 编译源码文件:yarn build:source


🥗链接模块到本地NPM:

  1. 建立连接命令:npm link
  2. 反建立连接命令:npm unlink


🍝CLI使用说明:

  1. 初始化配置文件:ds init
  2. 执行生成函数:ds start


演示效果:


手机版百度页面:

2.png3.png

手机版京东页面:

4.png5.png

手机版哔哩哔哩页面:

6.png7.png

结语:

经过简单的测试发现直接生成的骨架屏片段确实不怎么完美(未调整干扰元素的情况下),此次只是通过dps项目来学习处理问题的思路方法,大家在自己的项目中都是怎么处理骨架屏的呀,想学习学习。🎈



相关文章
|
JSON Dart 测试技术
Flutter中高级JSON处理:使用json_serializable进行深入定制
Flutter中高级JSON处理:使用json_serializable进行深入定制
2257 3
|
编解码 Dart API
鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件
本文介绍了如何开发一个 Flutter 鸿蒙插件,实现 Flutter 与鸿蒙的混合开发及双端消息通信。通过定义 `MethodChannel` 实现 Flutter 侧的 token 存取方法,并在鸿蒙侧编写 `EntryAbility` 和 `ForestPlugin`,使用鸿蒙的首选项 API 完成数据的读写操作。文章还提供了注意事项和参考资料,帮助开发者更好地理解和实现这一过程。
609 0
|
11月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
291 14
|
12月前
|
Rust 前端开发 JavaScript
Wasm在即时通讯IM场景下的Web端应用性能提升初探
简单的来说,Wasm就是使用C/C++/Rust等语言编写的代码,经过编译后得到汇编指令,再通过JavaScript相关API将文件加载到Web容器中(即运行在Web容器中的汇编代码)。Wasm是一种可移植、体积小、加载快速的二进制格式,可以将各种编程语言的代码编译成Wasm模块,这些模块可以在现代浏览器中直接运行。尤其在涉及到GPU或CPU计算时优势相对比较明显。
223 0
|
开发者
鸿蒙Flutter实战:07-混合开发
鸿蒙Flutter混合开发支持两种模式:1) 基于har包,便于主项目开发者无需关心Flutter细节,但不支持热重载;2) 基于源码依赖,利于代码维护与热重载,需配置Flutter环境。项目结构包括AppScope、flutter_module等目录,适用于不同开发需求。
470 3
|
IDE 调度 开发工具
鸿蒙Flutter实战:08-如何调试代码
本文介绍了鸿蒙Flutter项目的开发环境搭建、配置、日志查看及调试方法。首先按照指南搭建开发环境,安装IDE插件;接着配置vscode的launch.json文件;通过IDE调试控制台或命令行查看日志;提供两种调试Flutter的方式,包括IDE直接运行和使用DevEco;最后介绍ArkTs和Webview的调试方法。
482 0
|
机器学习/深度学习 分布式计算 PyTorch
大规模数据集管理:DataLoader在分布式环境中的应用
【8月更文第29天】随着大数据时代的到来,如何高效地处理和利用大规模数据集成为了许多领域面临的关键挑战之一。本文将探讨如何在分布式环境中使用`DataLoader`来优化大规模数据集的管理与加载过程,并通过具体的代码示例展示其实现方法。
809 1
Flutter-无限循环滚动标签
Flutter-无限循环滚动标签
296 0
hexo 博客插入本地图片时遇到的坑
在使用Hexo博客时,作者遇到了将本地图片插入文章的问题。安装了`hexo-asset-image`插件(v1.0.0)并启用资源文件夹功能后,图片并未正确显示。问题在于图片路径未被转换。通过卸载`hexo-asset-image`,改用`hexo-asset-img`插件,并调整图片引用格式为`![alt](文章名/图片名.png)`,成功解决了图片显示问题。此问题源于`hexo-asset-image`在Hexo 5及更高版本中已失效。
|
机器学习/深度学习 边缘计算 人工智能
边缘智能:边缘计算驱动实时深度学习
边缘智能:边缘计算驱动实时深度学习
522 0