type
status
date
slug
summary
tags
category
icon
password

SnowDream Loading - Vue 梦幻加载组件

一个功能丰富、视觉效果出色的 Vue.js 全局页面加载组件,如雪花般轻盈美丽,如梦境般炫彩动人。支持路由切换加载、图片预加载、自定义配置等功能。

✨ 特性

  • 🎨 炫酷动效:渐变背景、浮动装饰、旋转圆环、跳跃文字
  • 🛣️ 路由集成:自动在路由切换时显示/隐藏加载动画
  • 🖼️ 智能预加载:等待页面图片资源加载完成
  • ⚙️ 灵活配置:支持自定义延迟时间、超时时间、排除路由等
  • 📱 响应式设计:适配移动端设备
  • 🎯 单例模式:全局统一的加载状态管理

📁 项目结构

🚀 快速开始

第一步:创建组件文件

1. 创建 src/components/PageLoading.vue

👇 在此处放置 PageLoading.vue 的完整代码

2. 创建 src/utils/loading.js

👇 在此处放置 loading.js 的完整代码

第二步:在项目中使用

1. 基础使用(推荐)

main.js 中导入并初始化:

2. 特殊页面自定义加载

对于需要特殊处理的页面(如登录页),可以自行控制加载逻辑:
👇 特殊页面使用示例(如登录页面)

⚙️ 配置选项

setupRouter 配置

参数
类型
默认值
说明
routeChangeDelay
number
300
路由切换完成后的延迟时间(ms)
waitForImages
boolean
true
是否等待页面图片加载完成
maxWaitTime
number
8000
最大等待时间(ms)
excludeRoutes
Array
[]
排除的路由列表,支持字符串和正则表达式

excludeRoutes 示例

handleFirstLoad 配置

参数
类型
默认值
说明
firstLoadDelay
number
600
首次加载完成后的延迟时间(ms)
waitForImages
boolean
true
是否等待图片加载完成
maxWaitTime
number
10000
最大等待时间(ms)

🎨 样式定制

主要样式变量

组件采用渐变背景和多层动画效果,可以通过修改 PageLoading.vue 中的以下部分来自定义样式:

响应式断点

🔧 API 方法

工具类方法

组件实例方法

高级用法

📱 响应式支持

组件内置响应式设计,在不同设备上的表现:

桌面端(> 768px)

  • 完整动画效果
  • 大尺寸文字和圆环
  • 流畅的渐变和阴影效果

移动端(≤ 768px)

  • 适配小屏幕的文字大小
  • 调整后的圆环尺寸
  • 优化的触摸体验

🚨 注意事项

性能优化建议

  1. 合理设置超时时间:避免因资源加载过慢导致长时间显示加载动画
  1. 使用排除路由:对于不需要加载动画的页面设置排除
  1. 图片优化:确保页面图片已经过压缩优化

兼容性说明

  • Vue 版本:支持 Vue 2.x
  • 浏览器支持:现代浏览器(IE 11+)
  • 移动端:支持 iOS Safari、Android Chrome

🐛 常见问题

Q: 为什么某些页面的加载动画显示时间过长?

A: 检查以下几点:
  • 页面是否有大图片或网络请求较慢的资源
  • 调整 maxWaitTime 参数
  • 考虑将该路由添加到 excludeRoutes

Q: 如何禁用某个路由的加载动画?

A:setupRouterexcludeRoutes 参数中添加该路由:

Q: 可以自定义加载动画的样式吗?

A: 可以,直接修改 PageLoading.vue 组件中的 CSS 样式,参考上面的"样式定制"部分。

Q: 在单页应用中首次加载没有显示动画?

A: 确保在 main.jsmounted 钩子中调用了 handleFirstLoad 方法。

Q: 如何调试加载流程?

A: 工具类已内置 console.log,可以在开发者工具中查看加载流程的日志。
 
GitHub Actions自动化部署Vue项目到宝塔服务器埃拉托斯特尼筛法
Loading...