【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项目来学习处理问题的思路方法,大家在自己的项目中都是怎么处理骨架屏的呀,想学习学习。🎈



相关文章
|
4天前
|
移动开发 JavaScript 小程序
uView Skeleton 骨架屏
uView Skeleton 骨架屏
40 0
|
编解码 程序员 atlas
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
图集只是当所有给低昂的纹理需要相同的着色器时采用的一种方法,如果一些纹理需要通过着色器应用独立的图形效果,它们就必须分离到自己的材质中,并在单独的组中打图集。
1452 0
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
|
JSON 算法 数据可视化
⚡Three.js-在场景中导入3D动画模型
⚡Three.js-在场景中导入3D动画模型
46982 4
⚡Three.js-在场景中导入3D动画模型
|
API 数据库 开发者
用HarmonyOS ArkUI调用三方库PhotoView实现图片的联播、缩放
本文演示如果用HarmonyOS的ArkUI来调用已经上架到三方库中心的社区库。体验HarmonyOS 3最新的API 9,欢迎大家一起参与构建这个万物互联的时代
153 0
|
数据可视化 vr&ar 图形学
Unity可视化编程XDreamer插件导入
前言 XDreamer是一款基于Unity平台开发的,可在Unity(包括编辑器与运行时)中使用的可扩展的中文交互编辑软件,可进行2D、3D、VR、AR、MR开发。 本期博客为XDreamer的官方讲解的学习记录。可以理解为UE4中的蓝图效果。是从事美术人员的福音,美术人员也可不用编写程序进行游戏的制作。 一、下载XDreamer官方插件包 XDreamer中文交互编辑器http://www.xdreamer.com.cn/请在官网进行下载,得到如下的文件。 二、插件加载 目前我导入到URP
447 0
Unity可视化编程XDreamer插件导入
|
开发工具 vr&ar 图形学
Pico SDK导入Unity工程
2022VR国赛即将开始,对于Pico与Unity的使用已经很熟练了,想为下一届参赛选手及Unity 3D引擎爱好者或者是Pico开发者 聊一下自己的理解,目前Unity引擎的主流打包平台设备就是Pico和Steam VR,我参加的国赛采用的是Pico设备,所以今天就先讲一下Pico
555 0
Pico SDK导入Unity工程
|
前端开发
实例|APICloud AVM框架封装滑动单元格组件
滑动单元格组件原理是主题部分把按钮进行遮挡,按钮通过绝对定位,定位在最右边,通过监听触摸事件(touch),判断滑动的方向和计算滑动的距离以此来判定显示和隐藏按钮。
151 0
|
存储 JSON API
Qt开发技术:Qt的动态静态插件框架介绍和Demo
Qt开发技术:Qt的动态静态插件框架介绍和Demo
Qt开发技术:Qt的动态静态插件框架介绍和Demo
|
JavaScript
【dart-skeleton,脚本篇】自动生成骨架屏项目
【dart-skeleton,脚本篇】自动生成骨架屏项目
206 0
【dart-skeleton,脚本篇】自动生成骨架屏项目
|
数据采集 JavaScript
【dart-skeleton,逻辑篇】自动生成骨架屏项目
【dart-skeleton,逻辑篇】自动生成骨架屏项目
184 0