当前位置:首页 > 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 进度条库:

npm install nprogress

在 main.js 中导入样式:

import 'nprogress/nprogress.css'

结合 Vue Router 实现路由进度条

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

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>

上传/下载进度监控

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

vue请求实现进度条

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

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

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

相关文章

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式数…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在 V…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show…

vue实现阻塞

vue实现阻塞

Vue 实现阻塞的方法 在 Vue 中实现阻塞操作通常涉及异步控制、状态管理或生命周期钩子的使用。以下是几种常见方法: 使用 async/await 处理异步阻塞 通过 async/await 可…

vue实现github

vue实现github

Vue 实现 GitHub 相关功能 创建 GitHub API 请求 在 Vue 项目中,可以使用 axios 或 fetch 与 GitHub API 进行交互。需要在 GitHub 上创建个人访…

vue实现settimeout

vue实现settimeout

在 Vue 中实现 setTimeout Vue 中可以通过 JavaScript 原生的 setTimeout 方法实现延时操作,但需要注意结合 Vue 的响应式特性和生命周期管理。以下是几种常见实…