首页 > 其他分享 >NProgress 使用

NProgress 使用

时间:2023-11-07 17:05:17浏览次数:26  
标签:进度条 ease next start done 使用 NProgress

简单使用案例一

一、安装NProgress包

方法一: npm install --save nprogerss
方法二: yarn add nprogress
方法三:在图形化界面中搜索nprogress安装运行依赖
方法四:直接引入js、css或者通过cdn引入。
<script src='nprogress.js'></script>
<link rel='stylesheet' href='nprogress.css'/>

二、导入 NProgress 包对应的JS和CSS

import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

三、在 request 拦截器中,展示进度条 NProgress.start()

axios.interceptors.request.use(config => {
    NProgress.start()
    config.headers.Authorization = window.sessionStorage.getItem('token')
    // 在最后必须 return config
    return config
})

四、在 response 拦截器中,隐藏进度条 NProgress.done()

axios.interceptors.response.use(config => {
    NProgress.done()
    // 在最后必须 return config
    return config
})

案例二、在vue的路由跳转中使用和修改nprocess的进度条颜色

一、在下面声明完router(const router = new VueRouter({......}))后面写上路由钩子函数如下所示。

router.beforeEach((to, from, next) => {
    NProgress.start(); //开启进度条
    //中间写其他的项目中所需要的一些代码,例如有些网页只有登录了才能进,在这里可以做出判断,判断完了满足要求后就可以放行 next()
    next();
});

router.afterEach(() => {
    NProgress.done(); //完成进度条
});

二、基本上会这几个api就足够了,我们用的最多的就是这几个,NProgress.start()开启进度条,NProgress.done()完成进度条,如果我们想改变进度条的颜色,可以进入App.vue里,在style中加上下面这样几行代码即可。

#nprogress .bar {
    background: blue !important;    //这里可以随便写颜色
}

如图所示,这样一个进度条就完成了

NProgress 使用_进度条

三、在vue-next-admin-js中就是这样使用的

// 路由加载前
router.beforeEach(async (to, from, next) => {
	// NProgress显示右上角螺旋加载提示
	NProgress.configure({ showSpinner: false });
	if (to.meta.title) NProgress.start();
	const token = Session.get('token');
	if (to.path === '/login' && !token) {
		next();
		NProgress.done();
	} else {
		if (!token) {
			next(`/login?redirect=${to.path}¶ms=${JSON.stringify(to.query ? to.query : to.params)}`);
			Session.clear();
			NProgress.done();
		} else if (token && to.path === '/login') {
			next('/home');
			NProgress.done();
		} else {
			const storesRoutesList = useRoutesList(pinia);
			const { routesList } = storeToRefs(storesRoutesList);
			if (routesList.value.length === 0) {
				if (isRequestRoutes) {
					// 后端控制路由:路由数据初始化,防止刷新时丢失
					await initBackEndControlRoutes();
					// 解决刷新时,一直跳 404 页面问题,关联问题 No match found for location with path 'xxx'
					// to.query 防止页面刷新时,普通路由带参数时,参数丢失。动态路由(xxx/:id/:name")isDynamic 无需处理
					next({ path: to.path, query: to.query });
				} else {
					// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
					await initFrontEndControlRoutes();
					next({ path: to.path, query: to.query });
				}
			} else {
				next();
			}
		}
	}
});

// 路由加载后
router.afterEach(() => {
	NProgress.done();
});

// 导出路由
export default router;


其他资料和API介绍

GitHub地址

https://github.com/rstacruz/nprogres

演示网站

https://ricostacruz.com/nprogress/

API介绍

只需要调用start()done()来控制进度条

NProgress.start();  // 开始加载
NProgress.done();  // 加载完成

NProgress还提供了其他几个方法,如设置百分比,调用.set(n)来控制进度,其中n的取值范围为0-1。调用.inc()产生一个随机增量这将永远不会达到100%:将其用于每个图像加载(或类似加载)。通过传递 true 参数给done(),使进度条满格,强制完成。

NProgress.set(0.0);     // Sorta same as .start()
NProgress.set(0.4);     // 要设置进度百分比
NProgress.set(1.0);     // Sorta same as .done()

NProgress.inc();        // 递增-递增进度条 如果要增加特定值,可以将其作为参数传递
NProgress.inc(0.2);     // 这将获取当前状态值并添加0.2直到状态为0.994   
// 传递true到done(),即使未显示进度条也将显示进度条。(默认 如果.start()不调用,.done()*不会做任何事情) 
NProgress.done(true);   // 强制完成
// 获取状态值 要获取状态值,请使用.status
NProgress.status

实际使用中,我们一般在Ajax或者Pjax加载时,调用NProgress。你可以在jQuery提供的Ajax,或者使用Pjax,或者在其他框架如Vue.js中都可以很好的使用NProgress。

这里我们示例演示使用Ajax方法请求远程数据,然后调用进度条加载的过程。

$('#loading').on('click', function(event) {
    event.preventDefault();
    NProgress.start();
    $.get('data.php', function(data) {
        $('#msg').html(data);
        NProgress.done();
    });
});

参数配置

minimum-最小值

设置开始时最低百分比,默认是0.08。

NProgress.configure({ minimum: 0.1 });

template-模板

改变进度条的HTML结构。为了保证进度条正常工作,需要一个包含role='bar' 属性的元素。

NProgress.configure({
  template: "<div class='....'>...</div>"
});

easespeed-CSS动画属性

ease可传递CSS3缓冲动画字符串(如ease、linear、ease-in、ease-out、ease-in-out、cubic-bezier)。speed为动画速度(默认200,单位ms)。使用缓动(CSS缓动字符串)和速度(以毫秒为单位)调整动画设置。(默认:ease200

NProgress.configure({ easing: 'ease', speed: 500 });

trickle-自动递增

通过将此设置为来关闭自动递增行为false , 是否显示进度条,默认:true

NProgress.configure({ trickle: false });

进度条增加幅度和频率 trickleSpeed trickleRate

设置每次进度条步进速度(ms)。单位分别是 百分比、毫秒

NProgress.configure({ trickleRate: 0.02, trickleSpeed: 800 });

showSpinner

是否显示环形进度动画,默认true。

NProgress.configure({ showSpinner: false });

parent -父级容器

指定改变的父容器,默认body。

NProgress.configure({ parent: '#container' });

定制化

当然,你也可以修改nprogress.css以达到你想要的进度条外观,比如改变进度条背景颜色、高度等等。

标签:进度条,ease,next,start,done,使用,NProgress
From: https://blog.51cto.com/lenglingx/8236896

相关文章

  • vue中使用Loading这个加载工具
    在src/theme文件夹中建立loading.scss文件,内容如下:.loading-next{ width:100%; height:100%;}.loading-next.loading-next-box{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);}.loading-next.loading-next-box-warp{ width:80px......
  • 安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?
    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音......
  • 安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?
    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音......
  • Base64编码、解码 C语言例子(使用OpenSSL库)
    #include<stdio.h>#include<string.h>#include<unistd.h>#include<openssl/pem.h>#include<openssl/bio.h>#include<openssl/evp.h>intbase64_encode(char*in_str,intin_len,char*out_str){BIO*b64,*bio;......
  • 使用RTMP推流到安防监控平台LiteCVR,FLV视频无法播放的原因排查 
    众所周知,在安防监控领域中,远程视频监控技术的应用非常广泛。在工地监控中,它可以帮助监管部门和工程项目管理者及时掌握现场施工情况,发现是否存在违规、危险行为,保障工人安全和现场施工质量。安防监控视频平台LiteCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可......
  • 云存储/视频监控管理平台EasyCVR,使用sqlite数据库出现卡顿该如何优化?
    视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。有用......
  • python 播放语音使用 playsound -注意事项
    https://github.com/TaylorSMarks/playsoundpipinstallplaysound>>>fromplaysoundimportplaysound>>>playsound('/path/to/a/sound/file/you/want/to/play.mp3')try:playsound("test.wav")exceptExceptionase:p......
  • 如何使用git将某个文件回退到历史版本
    1.查看提交历史gitlogcommit4fe5108e0ca86d439f0da61751fac5845ec64f5c3commit38f9efd1f004996330a78c4b78372ba7c37469892commit5617205b96685ee157b67f3d66c71aa24cc378601会出现一些commitid2.找到需要回退的文件路径,如api/v2/s.php3.开始回退,要把api/v......
  • Scrapy框架基本使用(从安装到运行)
    Scrapy基本使用以抓取段子星中的标题和内容为例:https://duanzixing.com/1.Windows下安装:pipinstalltwistedpipinstallpywin32pipinstallscrapy2.创建工程#scrapystartproject<projectName>scrapystartprojectduanzixing3.新建爬虫源文件#进入工程目录......
  • 遇到的问题之“使用get请求时,请求参数中存在#导致后端request获取不到值”
    一.问题使用get请求时,请求参数中存在#导致后端request获取不到值发出参数带#的请求后端接收不到SKU的值,连后面platformId的值都没有了   二.原因1、有些符号[参数包含有特殊字符(%、#、&)]在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码......