vue全局加载下载进度条
时间: 2023-10-30 22:08:22 浏览: 173
vue页面加载时的进度条功能(实例代码)
要在 Vue 应用程序中实现全局下载进度条,你需要使用 Axios 拦截器来拦截所有的 HTTP 请求和响应,并在请求和响应期间显示进度条。
以下是实现全局下载进度条的步骤:
1. 安装 Axios 和 NProgress 库
```bash
npm install axios nprogress --save
```
2. 在 main.js 中引入 Axios 和 NProgress 库
```javascript
import axios from 'axios'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
Vue.prototype.$http = axios
```
3. 添加 Axios 拦截器
```javascript
// 请求拦截器
axios.interceptors.request.use(config => {
// 显示进度条
NProgress.start()
return config
}, error => {
return Promise.reject(error)
})
// 响应拦截器
axios.interceptors.response.use(response => {
// 隐藏进度条
NProgress.done()
return response
}, error => {
// 隐藏进度条
NProgress.done()
return Promise.reject(error)
})
```
4. 在组件中发起 HTTP 请求
```javascript
this.$http.get('/api/data').then(response => {
// 处理响应数据
}).catch(error => {
// 处理错误
})
```
5. 在模板中添加进度条组件
```html
<template>
<div>
<router-view></router-view>
<nprogress></nprogress>
</div>
</template>
```
6. 在样式表中添加进度条样式
```css
/* 进度条样式 */
#nprogress {
pointer-events: none;
}
#nprogress .bar {
background: #29d;
position: fixed;
z-index: 1031;
top: 0;
left: 0;
width: 100%;
height: 2px;
}
/* 进度条动画 */
#nprogress .peg {
display: block;
position: absolute;
right: 0px;
width: 100px;
height: 100%;
box-shadow: 0 0 10px #29d, 0 0 5px #29d;
opacity: 1.0;
-webkit-transform: rotate(3deg) translate(0px, -4px);
-ms-transform: rotate(3deg) translate(0px, -4px);
transform: rotate(3deg) translate(0px, -4px);
}
/* 隐藏进度条 */
#nprogress .spinner {
display: none;
}
```
通过以上步骤,你就可以在 Vue 应用程序中实现全局下载进度条了。当你发起 HTTP 请求时,进度条会自动显示,并在请求完成后自动隐藏。
阅读全文