vue路由加载页面
当vue路由切换时,有时候会出现短暂白屏,需要添加一个加载状态
参考:buildadmin 地址:https://demo.buildadmin.com/#/
利用vue的路由导航守卫:beforeEach、afterEach来判断显示加载状态的时间,当路由进入beforeEach开始显示加载页面,当路由进入afterEach结束加载状态
路由守卫
import { loading } from '@/utils/loading'
router.beforeEach((to, from, next) => {
// 页面加载
if (!(window as any).existLoading) {
loading.show();
(window as any).existLoading = true
}
})
router.afterEach(() => {
if ((window as any).existLoading) {
loading.hide()
}
})
加载组件 loading.ts
import { nextTick } from 'vue'
import '@/styles/loading.scss'
export const loading = {
show: () => {
const bodys: Element = document.body
const div = document.createElement('div')
div.className = 'block-loading'
div.innerHTML = `
<div class="block-loading-box">
<div class="block-loading-box-warp">
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
<div class="block-loading-box-item"></div>
</div>
</div>
`
bodys.insertBefore(div, bodys.childNodes[0])
},
hide: () => {
nextTick(() => {
setTimeout(() => {
const el = document.querySelector('.block-loading')
el && el.parentNode?.removeChild(el)
}, 200)
})
},
}
vue路由加载页面的更多相关文章
- vue-router路由加载两种模式
路由安装npm install --save vue-router 安装完成后,打开package.json,如果看到这个"vue-router": 版本号, 就代表安装成功了 ...
- Angular07 路由的工作流程、路由参数、子路由、利用路由加载模块、模块懒加载???
1 Angular路由的工作流程 用户在浏览器输入一个URL -> Angular将获取到这个URL并将其解析成一个UrlTree实例 -> Angular会到路由配置中去寻找并激活与Ur ...
- angularJS 路由加载js controller 未定义 解决方案
说明 本文主要说明,在angularJS框架使用中,angularJS 路由加载js controller 未定义 解决方案. 路由 $routeProvider 异步加载js 路由的基本用法,请查看 ...
- Flask源码之:路由加载
路由加载整体思路: 1. 将 url = /index 和 methods = [GET,POST] 和 endpoint = "index"封装到Rule对象 2. 将Ru ...
- flask 源码专题(八):路由加载
1.示例代码 from flask import Flask app = Flask(__name__,static_url_path='/xx') @app.route('/index') def ...
- 06 flask源码剖析之路由加载
06 Flask源码之:路由加载 目录 06 Flask源码之:路由加载 1.示例代码 2.路由加载源码分析 1.示例代码 from flask import Flask app = Flask(__ ...
- vue 动态菜单以及动态路由加载、刷新采的坑
需求: 从接口动态获取子菜单数据 动态加载 要求只有展开才加载子菜单数据 支持刷新,页面显示正常 思路: 一开始比较乱,思路很多.想了很多 首先路由和菜单共用一个全局route, 数据的传递也是通过s ...
- vue-cli3.x正确打包项目,解决静态资源与路由加载无效的问题,history模式下配合使用nginx运行打包后的项目
使用vue-cli3.x正确打包项目,配合nginx运行打包后的内容 vue.config.js module.exports = { publicPath: './',//打包后的位置(如果不设置这 ...
- vue 在nginx下页面刷新出现404问题解决和在nginx下页面加载了js但是页面显示空白问题解决
一.vue 在nginx下页面刷新出现404 在网上翻遍了所有这样问题的解决办法,全都是一个解决办法也是正确的解决办法,(后来在vue官网上关于history方式出现404解决方法也是这样说的),只是 ...
- 关于Vue懒加载问题
有关Vue懒加载其实并不是想象的那么难和复杂: 首先引入 import VueLazyLoad from 'vue-lazyload'; 其次是使用 Vue.use(VueLazyLoad,{ er ...
随机推荐
- Vue3 流程图组件库 Vue Flow 简单使用
官网 Vue Flow 官网 Vue Flow GitHub 安装 npm i --save @vue-flow/core yarn add @vue-flow/core pnpm i @vue-fl ...
- python字符串拼接方式
一 .join(iterator),后面必须是可迭代对象,例如:字符串,列表,元组 testList = ["1","2"] print(",&quo ...
- memoize
function getArea(r){ console.log(r); return Math.PI * r * r } function memoize(f){ let cache = {}; r ...
- uniapp 模拟器的使用
uniapp 模拟器的使用 下载夜深模拟器 uniapp - 工具-设置 adb路径 模拟器路径 模拟器端口号 :26944
- Nexus5安装PostmarketOS(Alpine Linux)并装上Docker
Postmarket OS是一个基于Alpine Linux.能够安装到手机或其他移动设备上.当然linux deploy也可以使用SSH,但linux deploy运行在容器里.使用上会有些限制 ...
- 【Delphi7官方镜像版】delphi_7_ent_en官方镜像 阿里云盘
[Delphi7官方镜像版]「delphi_7_ent_en官方镜像.iso.exe」https://www.aliyundrive.com/s/Du9C4XfZfwG 点击链接保存,或者复制本段内容 ...
- jetson nano 2gb相关问题
1.create_ap不能根据address设置带设备号的wifi热点 sudo nohup create_ap wlan0 eth0 ZL_Jetson_WIFI-$(sudo cat /sys/c ...
- JAVA 作业
1.让用户分2次输入2个整数,输出2个数的最大值,最小值 import java.util.Scanner;class Demo01 { public static void main(String[ ...
- Java中集合基础相关知识
1.集合基础 1.1 集合概述 编程的时候如果需要存储多个数据使用长度固定的数据存储,适应不了元素个数变化的需求,这时候我们就需要用集合. 集合类的特点:提供了一种存储空间可变的存储模型,存储的数据容 ...
- PyQt5 & PySide2信号与槽机制1
pyside2&pyqt5的信号与槽机制 1.信号与槽的两种写法 第一种情况: from PySide2 import QtWidgets, QtCore import sys if __na ...