Vue3 顶部进度条_vue顶部菜单栏

boyanx4天前技术教程8

NProgress是一个轻量级的进度条组件,在Github上已经2.4万star数了,虽然这个组件已经好久没有更新了,最近一次更新是20年4月份,改了jQuery的版本,但是该组件的使用频率还是很高的。

插件安装

 $ npm install --save nprogress 
 $ yarn add nprogress

插件使用

App.vue

<script lang="ts">
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { useRouter } from "vue-router";
export default {
  setup() {
    const router = useRouter();
    router.beforeEach((to, from, next) => {
      NProgress.start();
      next();
    });
    router.afterEach(() => {
      NProgress.done();
    });
  },
};
</script>

axios中使用

main.ts

import 'nprogress/nprogress.css'

axios.ts

import NProgress from 'nprogress'

axios.interceptors.request.use(
  function (config: any) {
   // 在发送请求之前做某件事
    NProgress.start() //开始
    return config
  },
  (error: { data: { error: { message: any } } }) => {
    return Promise.reject(error.data.error.message)
  }
)


axios.interceptors.response.use(
  function (config: any) {
    aspShow.value = false
    NProgress.done() //结束
    if (config.status === 200 || config.status === 204) {
      return Promise.resolve(config)
    }
    return Promise.reject(config)
  },
  function (error: any) {
    aspShow.value = false
    NProgress.done() //结束
    if (error.response.status) {
      switch (error.response.status) {
        // 401: 未登录
        // 未登录则跳转登录页面,并携带当前页面的路径
        // 在登录成功后返回当前页面,这一步需要在登录页操作。
        case 401:
          router.replace({
            path: '/login',
            query: {}
          })
          break
       
        // 其他错误,直接抛出错误提示
        default:
          message.error(`${error.response.status}:${error.response.statusText}`)
      }
     
      NProgress.done()////结束
      return Promise.reject(error)
    }
    
  }
)

路由中使用

import NProgress from 'nprogress'

// 页面切换之前取消上一个路由中未完成的请求
router.beforeEach((_to: any, _from: any, next: () => void) => {
  NProgress.start()
  next()
})
router.afterEach(() => {
  // 进度条
  NProgress.done()
})

全局配置

//全局进度条的配置
NProgress.configure({
  easing: 'ease', // 动画方式
  speed: 1000, // 递增进度条的速度
  showSpinner: false, // 是否显示加载ico
  trickleSpeed: 200, // 自动递增间隔
  minimum: 0.3, // 更改启动时使用的最小百分比
  parent: 'body', //指定进度条的父容器
})

TS的项目,还需要安装其类型声明文件,命令如下:

npm i @types/nprogress -D

或者如下声明

declare module 'nprogress';

相关文章

制作一个相对准确的网页加载进度条

很多网页为了提升用户体验,都会在页面载入的时候有一个加载进度条的动画效果,以此来提升用户体验。比较知名的进度条库有 NProgress,progressBar,progressJS 等等。使用方式也差...

如何实现页面顶部, 自定义滚动进度条样式

关键词:自定义滚动条、自定义顶部滚动条要实现页面顶部的自定义滚动进度条样式,可以按照以下步骤进行:在HTML中添加滚动进度条的容器元素,通常可以使用一个元素作为容器,放在页面顶部的合适位置。<d...

css 实现炫酷的条纹进度条效果_css画圆形进度条

效果图:html:<!--进度条--> <div class="progress-wrap"> <div class="progress-in...

Axure 8.0教程|实现环形动态进度条

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。Hello大家好,话说Axure RP 8.0 正式版已经发布有一段时间了,不知道小伙伴们是不是已经升级了呢?不过早在...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。