当前位置:首页 > VUE

vue实现页面加载进度

2026-01-23 11:42:31VUE

Vue 实现页面加载进度的方法

使用 NProgress 库

安装 NProgress 库:

npm install nprogress

在 Vue 项目中引入并使用:

import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 在路由守卫中调用
router.beforeEach((to, from, next) => {
  NProgress.start()
  next()
})

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

自定义进度条组件

创建一个全局进度条组件:

<template>
  <div class="progress-bar" :style="{ width: progress + '%' }"></div>
</template>

<script>
export default {
  data() {
    return {
      progress: 0
    }
  },
  methods: {
    start() {
      this.progress = 0
      const interval = setInterval(() => {
        this.progress += 10
        if (this.progress >= 100) {
          clearInterval(interval)
        }
      }, 200)
    },
    finish() {
      this.progress = 100
      setTimeout(() => {
        this.progress = 0
      }, 500)
    }
  }
}
</script>

<style>
.progress-bar {
  height: 3px;
  background-color: #42b983;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  transition: width 0.3s;
}
</style>

使用 Vue Router 的导航守卫

结合路由变化显示加载状态:

const router = new VueRouter({
  routes
})

router.beforeEach((to, from, next) => {
  // 显示加载状态
  store.commit('setLoading', true)
  next()
})

router.afterEach(() => {
  // 隐藏加载状态
  setTimeout(() => {
    store.commit('setLoading', false)
  }, 500)
})

监听页面资源加载

通过 window.onload 事件检测页面完全加载:

mounted() {
  window.onload = () => {
    // 页面完全加载后执行的操作
    this.loading = false
  }
}

使用 Axios 拦截器

为 AJAX 请求添加加载状态:

vue实现页面加载进度

axios.interceptors.request.use(config => {
  // 请求开始时显示加载状态
  store.commit('setLoading', true)
  return config
})

axios.interceptors.response.use(response => {
  // 请求完成后隐藏加载状态
  store.commit('setLoading', false)
  return response
}, error => {
  store.commit('setLoading', false)
  return Promise.reject(error)
})

每种方法适用于不同场景,NProgress 提供开箱即用的解决方案,自定义组件更灵活,路由守卫适合SPA应用,资源监听适合传统页面,拦截器则适合AJAX密集型应用。

标签: 进度加载
分享给朋友:

相关文章

vue实现环形进度

vue实现环形进度

Vue 实现环形进度条的方法 使用 SVG 和 CSS 实现 在 Vue 中创建一个环形进度条可以通过 SVG 和 CSS 结合实现。以下是一个简单的实现方式: <template>…

vue实现 懒加载

vue实现 懒加载

懒加载的实现方式 在Vue中实现懒加载可以通过多种方式,常见的包括路由懒加载和组件懒加载。以下是具体实现方法: 路由懒加载 路由懒加载是通过动态导入组件的方式实现的,适用于Vue Router的路由…

vue 实现懒加载

vue 实现懒加载

vue 实现懒加载的方法 在Vue中实现懒加载可以通过多种方式完成,以下是几种常见的方法: 使用Vue Router的懒加载 Vue Router支持动态导入组件,从而实现路由级别的懒加载。这种方式…

vue实现滚动加载

vue实现滚动加载

滚动加载的实现方法 滚动加载是一种常见的前端交互方式,适用于长列表或数据量大的场景。Vue中可以通过监听滚动事件或使用Intersection Observer API实现。 使用滚动事件监听 在V…

vue懒加载实现

vue懒加载实现

Vue懒加载的实现方法 懒加载(Lazy Loading)是优化前端性能的重要技术,Vue中可通过多种方式实现组件或资源的按需加载。 路由懒加载 使用Vue Router时,可通过动态导入语法实现路…

vue怎么实现加载速度

vue怎么实现加载速度

优化 Vue 项目的加载速度 代码分割与懒加载 使用动态导入(import())实现路由懒加载和组件懒加载。在路由配置中,将组件改为函数形式动态加载: const Home = () => i…