跳到主内容

推荐几款简单易用的vue顶部进度条组件

· 3分钟阅读

在开发官网,博客的时候,如果想要在页面顶部展示滚动进度,例如 twitter,Youtube 等,可以通过监听页面滚动来实现,但是为了避免重复造轮子,我整理了几款非常用好用 vue 进度条组件,直接用它不香吗?

vue-progressbar

一款轻量的线性进度条插件,允许配置进度条颜色,进度条失败颜色,宽度,速度,进度条的位置(页面的上下左右)。比如想要在页面切换的时候加入进度条,实现起来非常简单,只需要在把组件放到 #app 元素下即可。

<template>
<div id="app">
<!-- for example router view -->
<router-view></router-view>
<!-- set progressbar -->
<vue-progress-bar></vue-progress-bar>
</div>
</template>

<script>
export default {
mounted() {
// [App.vue specific] When App.vue is finish loading finish the progress bar
this.$Progress.finish();
},
created() {
// [App.vue specific] When App.vue is first loaded start the progress bar
this.$Progress.start();
// hook the progress bar to start before we move router-view
this.$router.beforeEach((to, from, next) => {
// does the page we want to go to have a meta.progress object
if (to.meta.progress !== undefined) {
let meta = to.meta.progress;
// parse meta tags
this.$Progress.parseMeta(meta);
}
// start the progress bar
this.$Progress.start();
// continue to next page
next();
});
// hook the progress bar to finish after we've finished moving router-view
this.$router.afterEach((to, from) => {
// finish the progress bar
this.$Progress.finish();
});
},
};
</script>

你也可以全局配置到 ajax 请求进度,例如 axios 的拦截器

import axios from "axios";
import app from "../main"; // import the instance

const instance = axios.create({
baseURL: "/api",
});

instance.interceptors.request.use((config) => {
app.$Progress.start(); // for every request start the progress
return config;
});

instance.interceptors.response.use((response) => {
app.$Progress.finish(); // finish when a response is received
return response;
});

export default instance; // export axios instance to be imported in your app

不过这种页面请求过多可能效果不是很好,可以单独配置单个请求。按使用场景配置即可。

<script>
export default {
methods: {
loadData () {
this.$Progress.start()
this.$http.jsonp('https://www.1024nav.com/api/getUserList')
.then((response) => {
this.$Progress.finish()
}, (response) => {
this.$Progress.fail()
})
}
}
}
</script>

类似的组件还有 vue2-loading-barvue-top-progress,当然还有 vue3 版本 vue3-progressvue-next-progressbar

vue-scroll-progress

开头说到实现页面滚动顶部展示进度功能,这款组件就实现了你想要的功能,废话少说,直接点击看demo 效果,看下是不是你想要的。实现起来也非常简单。

在 app.js 里注册组件

import Vue from "vue";
import VueScrollProgress from "vue-scroll-progress";

Vue.use(VueScrollProgress);

在组件内部使用

<template>
<VueScrollProgress></VueScrollProgress>
</template>

类似的组件还有 vue-read-progress