PACE - 为你的网站添加页面加载进度条

简介: pace-js 是一个为网站添加页面加载进度条的库,可以为任意网站自动添加上页面加载进度条,提供了多种主题样式。

网络异常,图片无法展示
|

pace-js 是一个为网站添加页面加载进度条的库,可以为任意网站自动添加上页面加载进度条,提供了多种主题样式,先看下效果:

使用

使用该库只需要将该库的脚本和选择的主题添加到页面 head 中即可:

<head>
    <script src="https://cdn.jsdelivr.net/npm/pace-js@latest/pace.min.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pace-js@latest/pace-theme-default.min.css" />
</head>
复制代码

该库会自动监听页面中的加载状态,包括 document 的状态、ajax 请求、事件滞后,并且在单页应用切换时也可监听。另外还支持检测特定元素的出现来判定等。如果只是普通使用场景,直接添加脚本后选择喜欢的主题即可。

主题

可在官网中选择喜爱的主题:pace

以下是官方提供的主题的截图:

网络异常,图片无法展示
|

直接下载喜欢的主题样式即可,也可对主题做二次开发,或直接参考官方主题开发自己的主题。

自定义

如果使用 script 标签加载脚本,可使用 data-pace-options 来定义配置:

<script data-pace-options='{ "ajax": false }' src="pace.min.js"></script>
复制代码

如果使用模块化导入,可手动调用 pace.start(options) 来启动:

pace.start({
    document: false
});
复制代码

监听的配置项包括:

  • ajax
  • document
  • eventLag
  • elements

ajax

ajax 配置默认为

{
    "trackMethods": ["GET"],
    "trackWebSockets": true,
    "ignoreURLs": []
}
复制代码

表示默认会监听 GET 请求和 WebSocket 连接,通过 ignoreURLs 可以忽略特定的 ajax 请求。

document

默认会监听 document 的加载,如需关闭可设置为 false

eventLag

eventLag 为监听脚本执行的延迟,可设置为 false 关闭(文档描述不是太清楚)

elements

通过 elements 可以监听特定元素的出现并隐藏加载,适用于如单页应用中指定渲染了 content 则视为加载完成的这种场景。

paceOptions = {
    elements: {
        selectors: ['.timeline,.timeline-error', '.user-profile,.profile-error']
    }
};
复制代码

除了文档中这几个 options,其实还有很多可设置选项,后面写一篇源码分析再列一下。

API

pace 暴露了几个方法:

  • pace.start:显示加载进度条,在直接使用 script 加载时会自动启动
  • pace.restart:重新显示加载进度条
  • pace.stop:主动停止 pace 进度条和监听
  • pace.track:主动监听请求
  • pace.ignore:主动忽略监听请求

restart 会在如触发 ajax 时、单页切换时(pushStatereplaceState)自动调用

事件

pace 存在五类事件:

  • startpace 初始化开始时或重启时
  • stoppace 主动调用 stop 时,或重启时
  • restartpace 重启时
  • donepace 完成时
  • hidepace 隐藏时

可通过 pace.onpace.offpace.once 来控制事件监听。

总结

pace 作为一个全局加载进度条,使用方便,有较为丰富的自定义选项用于定制,如果有类似的需求,不妨尝试一下。当然如果是自己的小玩具里,可以肆无忌惮的随意使用。

相关文章
|
前端开发
Grafana 分享带可变参数的链接
Grafana 分享带可变参数的链接
884 0
Grafana 分享带可变参数的链接
|
编解码 Java Maven
Java视频修改分辨率(附代码) | Java工具类
Java视频修改分辨率(附代码) | Java工具类
Java视频修改分辨率(附代码) | Java工具类
|
前端开发
react函数式组件模拟几个生命周期
在函数式组件中,你可以使用 useEffect 钩子来模拟类组件中的一些生命周期方法。下面是几个常见的生命周期方法的模拟示例
|
11月前
|
前端开发 持续交付 UED
模块联邦的适用场景
【10月更文挑战第25天】模块联邦适用于需要实现模块共享、组合、拆分和重组的场景,可以提高应用的可维护性、扩展性、灵活性和性能。在实际应用中,需要根据具体的需求和项目特点选择合适的模块联邦方案,并结合其他技术和工具进行综合应用。
|
12月前
|
JavaScript 数据可视化 定位技术
echart:html中使用& echarts 的使用
本文介绍了如何在HTML中使用ECharts图表库,包括通过CDN引入ECharts和ECharts-GL,创建基本的柱状图示例,以及在Vue项目中使用ECharts的方法。同时,提供了快速安装和配置ECharts的代码示例,以及如何添加地图插件的指导。
877 1
|
Ubuntu
蓝易云 - ubuntu下自启动设置,为了开机自启动launch文件
完成以上步骤后,每次开机时,Ubuntu系统就会自动启动你指定的launch文件了。
358 0
|
小程序 JavaScript 前端开发
小程序如何刷新当前页面?
小程序如何刷新当前页面?
2394 0
阿里巴巴开发手册“泰山”版它来了,1.4.0+终极版+阿里内部PPT
阿里的《Java开发手册》距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发布日志如下图所示:
|
存储 前端开发 小程序
小程序封装手写签名组件
本文详细介绍了如何封装一个小程序手写签名组件,包括签名、保存签名、清除签名和撤销功能。我们使用了 canvas 来实现手写签名功能,通过自定义组件的方式来封装手写签名组件,使其可以在不同的页面中重复使用。同时,我们使用了面向对象的编程方式,将手写签名的逻辑封装在一个signaImage类中,使代码更加清晰易懂。最后希望能帮助大家更好地理解和使用本文介绍的手写签名组件。
1028 0