当前位置:首页 > VUE

vue实现页面加载进度

2026-01-23 11:42:31VUE

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

使用 NProgress 库

安装 NProgress 库:

npm install nprogress

在 Vue 项目中引入并使用:

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 的导航守卫

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

vue实现页面加载进度

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 请求添加加载状态:

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密集型应用。

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

相关文章

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Intersec…

jquery加载

jquery加载

jQuery 加载方法 使用 CDN 加载 jQuery 推荐通过公共 CDN(如 Google、Microsoft 或 jQuery 官方)加载,速度快且可能已被浏览器缓存。 <scr…

vue加载动画实现

vue加载动画实现

Vue 加载动画实现方法 使用 CSS 动画或过渡 在 Vue 组件中可以直接通过 CSS 实现加载动画效果。定义一个简单的旋转动画: .loading-spinner { width: 40p…

react如何加载网页

react如何加载网页

使用 React 加载网页的方法 通过 iframe 嵌入网页 在 React 组件中,可以通过 iframe 标签直接加载外部网页。这种方式简单直接,适合嵌入第三方页面或静态内容。 imp…

jquery页面加载

jquery页面加载

jQuery 页面加载事件 在 jQuery 中,页面加载事件通常通过 $(document).ready() 或简写的 $() 来实现。这种方式确保代码在 DOM 完全加载后执行,但无需等待图片等资…

vue实现图片加载

vue实现图片加载

Vue 实现图片加载的方法 在 Vue 中实现图片加载可以通过多种方式,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind 动态绑定图片路径,可以灵活地加载本地或远程图片…