NProgress

322 阅读2分钟

安装+基本方法

//下载安装
npm i nprogress -s

//基本用法
NProgress.start()
NProgress.done()

常用配置

**递增:**要递增进度条,只需使用.inc()。这使它以随机量递增。这将永远不会达到100%:将其用于每次图像加载/类似加载。

NProgress.inc()

如果要增加特定值,可以作为参数传递

这将获取当前状态值并添加0.2

NProgress.inc(0.3)

每次增加一点点,但是永远不会到百分之百

配置项:

easing 和 speed

使用缓动(CSS缓动字符串)和速度(以毫秒为单位)调整动画设置。(默认:ease200

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

showSpinner

通过将加载微调器设置为false来关闭它。(默认值:true

NProgress.configure({ showSpinner: false });

在vue中的使用

引入Nprogress默认样式

在~/main.js中引入

//引入进度条样式
import 'nprogress/nprogress.css'

它默认显示为蓝色进度条,如果你想自定义进度条颜色,可在全局css中或在app.vue下写入自己自定义的css样式;

<style> 
// 自定义进度条颜色 
#nprogress .bar { 
    background: pink !important; //自定义颜色 
} 
</style>

在页面切换中使用

在~/router/index.js 【路由配置】文件中:

import Vue from 'vue' 
import VueRouter from 'vue-router' 
//引入nprogress 进度条插件 
import NProgress from 'nprogress'

Vue.use(VueRouter); 
// 简单配置 进度条,可以不配置:在axios中我们不再做配置,以用来区分。 
NProgress.inc(0.2) 
NProgress.configure({ easing: 'ease', speed: 500, showSpinner: false }) 

export const constRouter = [ 
    { 
        path: '/login', 
        component: () => import('@/views/login/Login'), 
    }, 
    ... 
]

const router = new VueRouter({ 
    mode: 'history', 
    base: process.env.BASE_URL, 
    routes: constRouter 
}) 

// 页面路由刚开始切换的时候 
router.beforeEach(async (to,from,next) => { 
    // 开启进度条 
    NProgress.start(); 
}) 

// 页面路由切换完毕的时候 
router.afterEach(() => { 
    // 关闭进度条 
    NProgress.done() 
}) 

export default router

在接口请求中使用

在~/api/index.js 【axios请求配置】文件中:

import axios from 'axios' 
//引入nprogress 进度条插件 
import NProgress from 'nprogress' 
// 创建axios实例 
const service = axios.create({ 
    baseURL: process.env.VUE_APP_BASE_API, //URL地址 环境变量文件 
    timeout: 5000 ,//超时 
}) 

// 请求拦截器 
service.interceptors.request.use( 
    config => { 
        // 开启进度条 
        NProgress.start(); 
        return config 
    }, error => { 
        return Promise.reject(error) 
    } 
) 

// 响应拦截器 
service.interceptors.response.use( 
    response =>{ 
        // 关闭进度条 
        NProgress.done() 
        return Promise.reject(response) 
    }, error => { 
        // 关闭进度条 
        NProgress.done() 
        return Promise.reject(error) 
    } 
) 

export default service;