首页 > 其他分享 >vue项目添加页面加载loding进度条效果

vue项目添加页面加载loding进度条效果

时间:2022-10-18 19:45:48浏览次数:83  
标签:axios 进度条 拦截器 vue loding config nprogress 加载

Vue项目的优化过程中需要添加NProgress加载loding进度条效果

一、进度条效果

我们要实现的效果就是,当我们点击每一个菜单,加载相应的页面时,在页面顶部中间会有一个加载的蓝色条条,随着页面的加载向右侧移动

我们要为所有的页面加载效果添加这种进度条效果。

二、如何实现进度条

我们要实现上面的进度条loading效果,就需要使用一个叫“nprogress”的第三方的包,官方工程github地址为:https://github.com/rstacruz/nprogress。根据官方文档的介绍,我们安装“nprogress”包的方法如下:

一般可以调用两个函数来控制: 进度条的显示或隐藏

三、实现loading效果的机制

官方文档提供的使用效果非常简单,就是使用Nprogress全局对象的start()方法和done()方法来开始和隐藏loading效果:

那么我们什么时候调用start()方法,什么时候调用done()方法呢?我们可以分析一下。

首先看一下我们的mian.js文件中有关axios的代码:

查看代码
import axios from 'axios'
 
axios.defaults.baseURL = 'http://00.0.0.1:8888/api/private/v1/' //定义根路径
//为axios添加拦截器
axios.interceptors.request.use(config =>{
  console.log(config);
  config.headers.Authorization = window.sessionStorage.getItem('token');
  return config;//最后必须返回config
})
Vue.prototype.$http = axios //在原型链上给$http赋值为axios对象

其中我们引入了axios包,并通过axios包来发起ajax请求。而只要我们发起了请求,就会触发request拦截器,请求被响应后就会触发response拦截器。所以我们可以基于axios的interceptors拦截器来实现我们的loading效果,即发起request请求的时候触发Nprogress全局对象的start()方法展示加载进度条,收到response相应的时候触发Nprogress全局对象的done()方法隐藏加载进度条。

四、开发loading效果加载

我们在mian.js中引入“nprogress”依赖以及其样式

查看代码
 //导入nprogress加载进度条包即样式
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
然后在axios原有的request拦截器中,调用展示进度条方法:
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/' //定义根路径
//为axios添加拦截器
//在request拦截器中,展示进度条 NProgress.start()
axios.interceptors.request.use(config =>{
  console.log(config);
  NProgress.start();
  config.headers.Authorization = window.sessionStorage.getItem('token');
  return config;//最后必须返回config
})
//在response拦截器中,隐藏进度条 NProgress.done()
axios.interceptors.response.use(config =>{
  console.log(config);
  NProgress.done();
  return config;//最后必须返回config
})
 
Vue.prototype.$http = axios //在原型链上给$http赋值为axios对象

然后我们打开项目,就可以看到进度条效果

标签:axios,进度条,拦截器,vue,loding,config,nprogress,加载
From: https://www.cnblogs.com/mahmud/p/16803819.html

相关文章

  • Vue.nextTick核心原理
    相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么......
  • vue实战-深入响应式数据原理
    本文将带大家快速过一遍Vue数据响应式原理,解析源码,学习设计思路,循序渐进。数据初始化_init在我们执行newVue创建实例时,会调用如下构造函数,在该函数内部调用this._init(......
  • cnpm install 安装依赖包后,vue-element-admin 运行报错血泪采坑总结
    前言以前安装依赖包会使用npminstall,但因服务器在国外,所以下载速度不稳定,总体比较慢。后来国内就有了淘宝镜像cnpm,安装依赖速度很快,因为服务器在国内npminstal......
  • vue3实战-完全掌握ref、reactive
    知道大家使用Vue3的时候有没有这样的疑惑,“ref、rective都能创建一个响应式对象,我该如何选择?”,“为什么响应式对象解构之后就失去了响应式?应该如何处理?”今天咱们就来......
  • vue源码分析-diff算法核心原理
    这一节,依然是深入剖析Vue源码系列,上几节内容介绍了VirtualDOM是Vue在渲染机制上做的优化,而渲染的核心在于数据变化时,如何高效的更新节点,这就是diff算法。由于源码中关于d......
  • vue传参之路由传参
    query传参参数会在链接后面显示,刷新不会消失this.$router.push({path:"/home",query:{id:1},});params传参参数不会显示在链接后......
  • vue源码分析-插槽原理
    Vue组件的另一个重要概念是插槽,它允许你以一种不同于严格的父子关系的方式组合组件。插槽为你提供了一个将内容放置到新位置或使组件更通用的出口。这一节将围绕官网对插......
  • ShellProgressBar控制台中漂亮的显示进度条
    ShellProgressBar控制台中漂亮的显示进度条ShellProgressBar库的使用控制台程序有时也需要进度条来显示任务执行的详细进度,最近就发现了一个第三方的类库叫ShellProgress......
  • vue 根据url下载图片方法
    downloadByBlob(url,name){letimage=newImage()image.setAttribute('crossOrigin','anonymous')image.src=urlimage.onload=()=>{......
  • vue-java (Get / Post 传参)
    我在controller层传的参数是List时报Noprimaryorsingleuniqueconstructorfoundforinterfacejava.util.List于是加了@RequestParam,结果报Requiredrequestparame......