vue页面加载时的进度条功能(实例代码)

yizhihongxing

为了实现页面加载时的进度条功能,我们可以利用vue-router路由导航守卫的特性,监听路由跳转前后的事件,来实现页面加载状态的追踪和展示。下面是具体实现的步骤:

1.在项目中安装nprogress插件

npm install --save nprogress

2.在路由配置文件中引入nprogress

import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
  1. 在路由跳转前和跳转后分别添加nprogress的开始、结束事件
router.beforeEach((to, from, next) => {
  Nprogress.start()
  next()
})

router.afterEach(() => {
  Nprogress.done()
})
  1. 在页面模板中添加nprogress的进度条元素
<!-- App.vue -->
<template>
  <div id="app">
    <router-view />
    <Nprogress :is-show="show"/>
  </div>
</template>
  1. 在Nprogress.vue组件中实现进度条的展示和隐藏
<!-- Nprogress.vue -->
<template>
  <div class="nprogress-container" :class="{show: isShow}">
    <div class="nprogress-bar"></div>
  </div>
</template>

<script>
export default {
  props: {
    isShow: {
      type: Boolean,
      default: false
    }
  }
}
</script>

<style>
.nprogress-container {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 100%;
  background-color: #e0e0e0;
  z-index: 9999;
  transition: opacity .2s linear;
  opacity: 0;
}
.nprogress-container.show {
  opacity: 1;
}
.nprogress-bar {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0;
  background-color: #2196f3;
  transition: width .1s ease-out;
}
</style>

完成以上步骤,我们就成功实现了vue页面加载时的进度条功能。nprogress插件提供了多种主题和样式配置,大家可以上官网查看文档进行自定义设置。

这里再举两个示例说明一下:

示例一:引入进度条组件但不在所有路由跳转前后都显示进度条

通过watch监听$route变化,当路由跳转时动态控制进度条的显示和隐藏。

<!-- App.vue -->
<template>
  <div id="app">
    <Nprogress :is-show="show"/>
    <transition name="fade">
      <router-view />
    </transition>
  </div>
</template>

<script>
import Nprogress from '@/components/Nprogress.vue'

export default {
  components: { Nprogress },
  data() {
    return {
      show: false
    }
  },
  watch: {
    $route(to, from) {
      if (to.path === '/login' || to.path === '/register') {
        this.show = false
      } else {
        this.show = true
      }
    }
  }
}
</script>

示例二:自定义进度条组件样式

<!-- Nprogress.vue -->
<template>
  <div class="nprogress-container" :class="{show: isShow}">
    <div class="nprogress-bar" :style="{background: barColor, height: barHeight}">
      <div class="nprogress-peg"></div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    isShow: {
      type: Boolean,
      default: false
    },
    barColor: {
      type: String,
      default: '#29d',
    },
    barHeight: {
      type: String,
      default: '2px',
    },
  }
}
</script>

<style>
.nprogress-container {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-color: rgba(250, 250, 250, 0.8);
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: opacity .2s linear;
  opacity: 0;
}
.nprogress-container.show {
  opacity: 1;
}
.nprogress-bar {
  position: relative;
  width: 80%;
  height: 2px;
  .nprogress-peg {
    position: absolute;
    right: 0px;
    display: block;
    width: 16px;
    height: 100%;
    border: none;
    border-radius: 100px 0px 0px 100px / 4px 0px 0px 4px;
    background-color: #fff;
    box-shadow: 0 0 10px 1px #29d, 0 0 5px 0 #29d;
    transform: rotate(3deg) translate(0px, -4px);
  }
}
</style>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue页面加载时的进度条功能(实例代码) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue组件暴露和.js文件暴露接口操作

    Vue组件暴露 在 Vue 的开发过程中,封装组件是必不可少的一项技能。将组件封装后,我们通常需要将组件暴露出来,使得其他地方可以引用使用。下面是Vue组件暴露的完整攻略: 1. 全局组件 在Vue中,我们可以使用Vue.component()方法来注册全局组件。这样注册后,整个应用的任何组件都可以使用这个组件。 // 定义全局组件 Vue.componen…

    Vue 2023年5月28日
    00
  • 输入npm run xxx后执行原理深入解析

    输入npm run xxx后执行原理深入解析 1. npm run xxx的作用 npm run xxx是用来执行在项目package.json文件中scripts字段中定义的脚本命令xxx。 例如在package.json文件中,定义了以下脚本: "scripts": { "start": "node ap…

    Vue 2023年5月28日
    00
  • Vue项目判断开发、测试、正式环境过程

    要在Vue项目中区分开发、测试和正式环境,我们通常需要在构建和打包阶段添加相应的标记,例如process.env.NODE_ENV可以告诉我们当前的环境变量。下面是一个完整的攻略,讲解了如何实现在Vue项目中进行环境标记,并根据标记执行不同的操作。 环境标记的配置 在Vue项目中,我们可以通过webpack中的DefinePlugin插件来定义环境变量。这个…

    Vue 2023年5月28日
    00
  • Vue-router的使用和出现空白页,路由对象属性详解

    Vue-router是Vue.js官方的路由管理器,可以快速地搭建单页面应用程序(SPA),并提供了丰富的导航解决方案。 Vue-router的使用 1. 安装和引入 安装Vue-router可以使用npm或yarn,在项目目录下运行以下命令: npm install vue-router 安装完成后,在项目中引入Vue-router: import Vue…

    Vue 2023年5月28日
    00
  • Mpvue中使用Vant Weapp组件库的方法步骤

    使用Vant Weapp组件库的方法步骤: 安装Vant Weapp 在cmd中进入mpvue项目根目录,执行以下命令进行安装: npm install vant-weapp -S –production 在 App.vue 中引入 Vant Weapp 在 App.vue 的 script 标签中如下添加: import Vant from ‘vant-…

    Vue 2023年5月27日
    00
  • Vue.js学习笔记之常用模板语法详解

    当谈到Vue.js时,模板语法是一个不可或缺的部分。在本篇文章中,我们将深入探讨Vue.js模板语法中的常用内容。 插值 插值是Vue.js通常用于在模板中显示数据的方法。我们可以使用双花括号来绑定变量,并将变量的值插入到模板中。 <div> {{ message }} </div> 当一个组件被实例化时,Vue.js会从组件实例中找…

    Vue 2023年5月27日
    00
  • Vue.js展示AJAX数据简单示例讲解

    下面我将为你讲解如何在Vue.js中展示AJAX数据的完整攻略。 1. 起步 首先,我们需要安装npm包管理器,并使用它来安装Vue.js: npm install vue 安装完成后,在HTML文件中引入Vue.js: <script src="https://cdn.jsdelivr.net/npm/vue"></s…

    Vue 2023年5月28日
    00
  • Vue六大基本类型中的原始值响应式

    Vue六大基本类型中的原始值响应式是指 Vue 对于 JavaScript 基本数据类型的响应式实现,包括 Number、String、Boolean 和 Symbol 四个类型的数据。 Vue 对于这些数据类型的响应式实现是通过 Object.defineProperty() 方法来实现的。当 Vue 检测到数据发生变化时,会调用数据的 setter 方法…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部