• 【VUE项目实战】61、添加页面加载进度条效果


    接上篇《60、数据报表模块介绍和基础框架搭建
    上一篇我们完成了数据报表的开发,本篇我们学习如何为项目添加加载进度条的效果。

    一、进度条效果

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

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

    二、如何实现进度条

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

    由于我们是Vue的项目,我们可以通过VUE-UI界面来完成“nprogress”依赖的安装,首先通过命令行cmd打开vue ui界面,然后点击安装依赖按钮:

    然后在“运行依赖”下搜索“nprogress”,下载最新版本:
    下载完毕后,我们就可以使用loading效果了。

    三、实现loading效果的机制

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

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

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

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

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

    四、开发loading效果加载

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

    1. //导入nprogress加载进度条包即样式
    2. import NProgress from 'nprogress'
    3. import 'nprogress/nprogress.css'
    4. 然后在axios原有的request拦截器中,调用展示进度条方法:
    5. axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/' //定义根路径
    6. //为axios添加拦截器
    7. //在request拦截器中,展示进度条 NProgress.start()
    8. axios.interceptors.request.use(config =>{
    9.   console.log(config);
    10.   NProgress.start();
    11.   config.headers.Authorization = window.sessionStorage.getItem('token');
    12.   return config;//最后必须返回config
    13. })
    14. //在response拦截器中,隐藏进度条 NProgress.done()
    15. axios.interceptors.response.use(config =>{
    16.   console.log(config);
    17.   NProgress.done();
    18.   return config;//最后必须返回config
    19. })
    20. Vue.prototype.$http = axios //在原型链上给$http赋值为axios对象

    然后我们打开项目,就可以看到进度条效果(可能很快,一闪而过):

    至此,我们的加载进度条功能就开发完成了。

    参考:黑马程序员(www.itheima.com)Vue项目实战教学视频

    转载请注明出处:https://blog.csdn.net/acmman/article/details/126074649

  • 相关阅读:
    无需专业技能,轻松创建个人博客:Cpolar+Emlog在Ubuntu上的搭建指南
    学习rsync
    原生php单元测试示例
    蓝桥杯物联网_STM32L071_1_CubMx&keil5基础配置
    11.11 校招 实习 内推 面经
    油猴脚本尝试
    天星金融普及个人养老金制度,共筑老龄友好型社会
    Kafka快速入门(最新版3.6.0)
    idea中的.idea文件夹以及*.iml文件(新版idea没有*.iml文件了),新旧版idea打开同一个项目会不会出现不兼容
    一份 Python 日志配置,同时适用于开发和生产环境
  • 原文地址:https://blog.csdn.net/u013517797/article/details/126074649