From 306b08d55ad0b227bcc95f2c019c491712e13e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BB=98?= <925456043@qq.com> Date: Tue, 24 Feb 2026 16:45:14 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=87=92=E5=8A=A0=E8=BD=BD=E8=A1=A8?= =?UTF-8?q?=E7=8E=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化路由首进页面过渡策略,减少遮罩阻塞感 - 为菜单导航增加组件预取,降低首次点击等待 - 缩短页面 loading 遮罩过渡时长 --- easyflow-ui-admin/app/src/router/guard.ts | 37 +++++- .../src/components/spinner/spinner.vue | 2 +- .../src/basic/content/use-content-spinner.ts | 117 +++++++++++++++--- .../layouts/src/basic/menu/use-extra-menu.ts | 4 +- .../layouts/src/basic/menu/use-navigation.ts | 50 +++++++- 5 files changed, 191 insertions(+), 19 deletions(-) diff --git a/easyflow-ui-admin/app/src/router/guard.ts b/easyflow-ui-admin/app/src/router/guard.ts index 971c92e..cdb309a 100644 --- a/easyflow-ui-admin/app/src/router/guard.ts +++ b/easyflow-ui-admin/app/src/router/guard.ts @@ -10,6 +10,39 @@ import { useAuthStore } from '#/store'; import { generateAccess } from './access'; +interface NetworkConnectionLike { + effectiveType?: string; + saveData?: boolean; +} + +function isSlowNetworkConnection() { + if (typeof navigator === 'undefined') { + return false; + } + const nav = navigator as Navigator & { + connection?: NetworkConnectionLike; + mozConnection?: NetworkConnectionLike; + webkitConnection?: NetworkConnectionLike; + }; + const connection = + nav.connection ?? nav.mozConnection ?? nav.webkitConnection; + if (!connection) { + return false; + } + if (connection.saveData) { + return true; + } + return ['2g', '3g', 'slow-2g'].includes(connection.effectiveType ?? ''); +} + +function shouldUseRouteProgress() { + if (preferences.transition.progress) { + return true; + } + // 普通网络下,loading遮罩不显示时自动回退到顶部进度条 + return preferences.transition.loading && !isSlowNetworkConnection(); +} + /** * 通用守卫配置 * @param router @@ -22,7 +55,7 @@ function setupCommonGuard(router: Router) { to.meta.loaded = loadedPaths.has(to.path); // 页面加载进度条 - if (!to.meta.loaded && preferences.transition.progress) { + if (!to.meta.loaded && shouldUseRouteProgress()) { startProgress(); } return true; @@ -34,7 +67,7 @@ function setupCommonGuard(router: Router) { loadedPaths.add(to.path); // 关闭页面加载进度条 - if (preferences.transition.progress) { + if (shouldUseRouteProgress()) { stopProgress(); } }); diff --git a/easyflow-ui-admin/packages/@core/ui-kit/shadcn-ui/src/components/spinner/spinner.vue b/easyflow-ui-admin/packages/@core/ui-kit/shadcn-ui/src/components/spinner/spinner.vue index dbce69e..483f186 100644 --- a/easyflow-ui-admin/packages/@core/ui-kit/shadcn-ui/src/components/spinner/spinner.vue +++ b/easyflow-ui-admin/packages/@core/ui-kit/shadcn-ui/src/components/spinner/spinner.vue @@ -63,7 +63,7 @@ function onTransitionEnd() {