当前位置:首页 > VUE

vue请求实现进度条

2026-03-27 06:18:03VUE

使用 Axios 拦截器实现请求进度条

在 Vue 项目中安装 Axios 作为 HTTP 客户端:

npm install axios

创建 Axios 实例并添加请求/响应拦截器:

import axios from 'axios'

const instance = axios.create({
  baseURL: 'https://api.example.com'
})

// 请求拦截器
instance.interceptors.request.use(config => {
  // 进度条开始
  NProgress.start()
  return config
})

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

export default instance

集成 NProgress 进度条库

安装 NProgress 进度条库:

vue请求实现进度条

npm install nprogress

在 main.js 中导入样式:

import 'nprogress/nprogress.css'

结合 Vue Router 实现路由进度条

在 router.js 中添加导航守卫:

vue请求实现进度条

import NProgress from 'nprogress'

router.beforeEach((to, from, next) => {
  NProgress.start()
  next()
})

router.afterEach(() => {
  NProgress.done()
})

自定义进度条样式

在 CSS 中覆盖默认样式:

#nprogress .bar {
  background: #42b983 !important;
  height: 3px !important;
}

#nprogress .peg {
  box-shadow: 0 0 10px #42b983, 0 0 5px #42b983 !important;
}

#nprogress .spinner-icon {
  border-top-color: #42b983 !important;
  border-left-color: #42b983 !important;
}

使用 Element UI 进度条组件

对于使用 Element UI 的项目:

<template>
  <el-progress 
    :percentage="progressPercent" 
    :status="progressStatus"
    v-if="showProgress"
  />
</template>

<script>
export default {
  data() {
    return {
      progressPercent: 0,
      showProgress: false
    }
  },
  methods: {
    updateProgress(percent) {
      this.progressPercent = percent
      this.showProgress = percent < 100
    }
  }
}
</script>

上传/下载进度监控

对于文件上传/下载操作:

axios.post('/upload', formData, {
  onUploadProgress: progressEvent => {
    const percent = Math.round(
      (progressEvent.loaded * 100) / progressEvent.total
    )
    this.updateProgress(percent)
  }
})

这些方法可以根据项目需求单独使用或组合使用,实现完整的请求进度展示功能。

标签: 进度条vue
分享给朋友:

相关文章

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖拽…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

vue实现导出

vue实现导出

Vue 实现导出功能的方法 在 Vue 项目中实现导出功能通常涉及将数据导出为 Excel、CSV 或其他格式。以下是几种常见的实现方式: 使用 xlsx 库导出 Excel 安装 xlsx 库:…

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue nexttrick实现

vue nexttrick实现

Vue 中 nextTick 的实现原理 nextTick 是 Vue 提供的一个异步方法,用于在下次 DOM 更新循环结束之后执行延迟回调。它利用了 JavaScript 的事件循环机制,确保回调在…