Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

awesome-skeleton

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

awesome-skeleton

骨架图生成器

  • 0.1.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

awesome-skeleton

效果

百度骨架图效果

说明

  • 骨架图生成组件,仅限node端使用。该组件提供骨架图生成和骨架图模板注入两个能力。
  • 骨架图生成逻辑:通过传入页面地址,使用 Puppeteer 无头浏览器打开页面地址,对页面首屏图片和文本等节点进行灰色背景处理,然后对页面首屏进行截图,生成压缩后的 base64 png 图片。

安装方法

$ npm i awesome-skeleton -g

使用方法

添加配置文件

skeleton.config.json:

{
  "pageName": "baidu",
  "pageUrl": "https://www.baidu.com",
  "openRepeatList": false,
  "device": "iPhone X",
  "minGrayBlockWidth": 80,
  "minGrayPseudoWidth": 10,
  "debug": true,
  "delayTime": 0,
  "debugTime": 3000,
  "cookies": [
    {
      "domain": ".baidu.com",
      "expirationDate": 1568267131.555328,
      "hostOnly": false,
      "httpOnly": false,
      "name": "BDORZ",
      "path": "/",
      "sameSite": "unspecified",
      "secure": false,
      "session": false,
      "storeId": "0",
      "value": "yyyyyyyyy",
      "id": 2
    }
  ]
}

生成骨架屏

$ skeleton -c ./skeleton.config.json

页面 DomReady 之后,会在页面顶部出现红色按钮:开始生成骨架屏。

生成完成后,会在运行目录生成 skeleton-output 文件件,里面包括骨架屏 png 图片、base64 文本、html 文件。

其中 html 文件可以直接拿来用,复制下面位置:

<html>
  <head>
    <!--- 骨架屏代码 -->
  </head>
</html>

登录态解决

如果页面需要登录,则需要下载 Chrome 插件 EditThisCookie,将 Cookie 复制到配置参数中。

参数

参数名称必填默认值说明
pageUrl-页面地址(此地址必须可访问)
pageNameoutput页面名称(仅限英文)
cookies页面 Cookies,用来解决登录态问题
outputPathskeleton-output骨架图文件输出文件夹路径,默认到项目 skeleton-output 中
openRepeatListtrue默认会将每个列表的第一项进行复制
device空为PC参考 puppeteer/DeviceDescriptors.js,可以设置为 'iPhone 6 Plus'
debugfalse是否开启调试开关
delayTime0延迟打开页面时间,用户处理登录等操作
debugTime0调试模式下,页面停留在骨架图的时间
minGrayBlockWidth0最小处理灰色块的宽度
minGrayPseudoWidth0最小处理伪类宽

dom 节点属性

这是获取优质骨架图的要点,通过设置以下几个 dom 节点属性,在骨架图中对某些节点进行移除、忽略和指定背景色的操作,去除冗余节点的干扰,从而使得骨架图效果达到最佳。

参数名称说明
data-skeleton-remove指定进行移除的 dom 节点属性
data-skeleton-bgcolor指定在某 dom 节点中添加的背景色
data-skeleton-ignore指定忽略不进行任何处理的 dom 节点属性
data-skeleton-empty将某dom的innerHTML置为空字符串

示例:

<div data-skeleton-remove><span>abc</span></div>
<div data-skeleton-bgcolor="#EE00EE"><span>abc</span></div>
<div data-skeleton-ignore><span>abc</span></div>
<div data-skeleton-empty><span>abc</span></div>

项目开发指南

安装依赖

$ cd awesome-skeleton && npm i

运行项目

由于生成骨架图的代码是通过动态脚本插入的,所以需要通过 rollup 将 src/script 中的代码打包到 src/script/dist/index.js 中。首先启动 rollup 打包

$ npm run dev

修改 demo/index.js 中的配置,从而生成不同页面的骨架图:

$ cd demo
$ node index.js

生成的结果在 demo/output 中,包括

  • base64-test.png # 骨架图图片
  • base64-test.txt # 骨架图 Base64 编码
  • base64-test.html # 最终生成 HTML

在项目中使用

将 demo/output/base64-test.html 的内容复制到目标页面模版的 中。

注意:

  • 骨架图默认在 onload 事件 1s 后销毁。
  • 手动销毁方式:
window.SKELETON && SKELETON.destroy();

当然,你也可以在项目中直接使用生成的 Base64 图片

感谢

  • puppeteer
  • page-skeleton-webpack-plugin
  • joe-skeleton
  • 自动化生成 H5 骨架页面
  • 一个前端非侵入式骨架屏自动生成方案

FAQs

Package last updated on 19 Sep 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc