当前位置:首页 > VUE

vue 路由实现加载中

2026-02-22 18:50:29VUE

vue 路由实现加载中效果的方法

在 Vue 项目中,可以通过路由守卫和全局状态管理实现加载中的效果。以下是几种常见的方法:

使用路由守卫和加载状态

在路由配置文件中,通过 beforeEachafterEach 钩子控制加载状态的显示与隐藏。结合 Vuex 或 Pinia 管理全局加载状态。

// router/index.js
import router from './router'
import store from './store'

router.beforeEach((to, from, next) => {
  store.commit('setLoading', true)
  next()
})

router.afterEach(() => {
  store.commit('setLoading', false)
})

在组件中使用加载动画

在根组件或布局组件中,通过 v-ifv-show 控制加载动画的显示。加载状态可以从 Vuex 或 Pinia 中获取。

<template>
  <div>
    <div v-if="isLoading" class="loading-overlay">
      <div class="loading-spinner"></div>
    </div>
    <router-view />
  </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState(['isLoading'])
  }
}
</script>

结合异步组件和 Suspense

Vue 3 的 Suspense 组件可以更方便地处理异步加载状态。在路由配置中使用动态导入,结合 Suspense 显示加载中效果。

<template>
  <Suspense>
    <template #default>
      <router-view />
    </template>
    <template #fallback>
      <div class="loading">Loading...</div>
    </template>
  </Suspense>
</template>

自定义加载进度条

使用第三方库如 nprogress 在路由跳转时显示进度条。在路由守卫中调用 NProgress.start()NProgress.done()

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

router.beforeEach((to, from, next) => {
  NProgress.start()
  next()
})

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

优化加载体验

对于较慢的路由加载,可以设置延迟显示加载动画,避免闪烁。使用 setTimeout 或自定义逻辑控制加载状态的显示时机。

router.beforeEach((to, from, next) => {
  const timer = setTimeout(() => {
    store.commit('setLoading', true)
  }, 300)
  next()
})

router.afterEach(() => {
  clearTimeout(timer)
  store.commit('setLoading', false)
})

以上方法可以根据项目需求灵活组合使用,确保用户在路由切换时有良好的加载体验。

vue 路由实现加载中

标签: 路由加载中
分享给朋友:

相关文章

vue实现动态路由按钮

vue实现动态路由按钮

Vue 实现动态路由按钮的方法 动态路由按钮的实现通常涉及权限控制,根据用户角色或权限动态显示或隐藏路由按钮。以下是几种常见方法: 基于路由元信息(meta)和v-if控制 在路由配置中添加权限标识…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…

vue路由实现介绍

vue路由实现介绍

Vue 路由基础概念 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。它通过动态映射 URL 到组件,实现无刷新页面切换。核心功能包括: 嵌套路由:支持多…

vue实现路由守卫

vue实现路由守卫

路由守卫的基本概念 路由守卫是Vue Router提供的一种机制,用于在路由跳转前后执行特定的逻辑。它可以用于权限控制、页面访问限制、数据预加载等场景。Vue Router提供了多种路由守卫,包括全局…

uniapp 路由插件

uniapp 路由插件

在UniApp中,路由管理通常依赖框架内置的页面跳转API,但若需要更高级的路由功能(如动态路由、拦截器等),可通过以下插件或方案实现: 路由插件推荐 uni-simple-router 专为Un…

动态路由vue实现

动态路由vue实现

动态路由的实现方式 在Vue中实现动态路由通常有两种主要方式:基于用户权限的动态路由和基于参数变化的动态路由。这两种方式都能有效提升应用灵活性。 基于用户权限的动态路由 通过用户角色或权限动态生成可…