From 45507dee8d4d8cc5c59b3cf9cad299f308db7b37 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Wed, 21 Oct 2026 13:35:55 +0800 Subject: [PATCH] =?UTF-8?q?perf(admin):=20=E9=99=8D=E4=BD=8E=E9=A6=96?= =?UTF-8?q?=E5=B1=8F=E4=BD=93=E7=A7=AF=E5=B9=B6=E4=BF=AE=E5=A4=8D=20Window?= =?UTF-8?q?s=20=E8=AE=BF=E9=97=AE=E7=99=BD=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1) Editor 改 defineAsyncComponent,IEditorConfig 改 import type 2) dev server 绑定 :: 双栈,避免 Windows 下 localhost 走 ::1 超时 3) dev 脚本去掉 POSIX 环境变量前缀,Windows 可直接 pnpm dev --- package.json | 2 +- src/components/Form/src/helper/componentMap.ts | 6 +++++- src/components/Form/src/types/index.ts | 3 ++- vite.config.mts | 5 ++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0c3f7e6..4153b9f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "private": true, "scripts": { "i": "pnpm install", - "dev": "VITE_CJS_IGNORE_WARNING=1 vite --mode base", + "dev": "vite --mode base", "ts:check": "pnpm vue-tsc --noEmit --skipLibCheck", "build:pro": "VITE_CJS_IGNORE_WARNING=1 vite build --mode pro", "build:dev": "VITE_CJS_IGNORE_WARNING=1 vite build --mode dev", diff --git a/src/components/Form/src/helper/componentMap.ts b/src/components/Form/src/helper/componentMap.ts index 67b06ef..1858a19 100644 --- a/src/components/Form/src/helper/componentMap.ts +++ b/src/components/Form/src/helper/componentMap.ts @@ -1,5 +1,6 @@ // Author: fruit.com.cn +import { defineAsyncComponent } from 'vue' import type { Component } from 'vue' import { ElCascader, @@ -23,9 +24,12 @@ import { ElUpload } from 'element-plus' import { InputPassword } from '@/components/InputPassword' -import { Editor } from '@/components/Editor' import { ComponentName } from '../types' +// wang-editor 打包后约 1.1MB:改成异步组件,只有真正渲染编辑器字段时才加载, +// 避免登录页这类只是用了 Form 的页面把它一并拉进首屏。 +const Editor = defineAsyncComponent(() => import('@/components/Editor')) + const componentMap: Recordable = { RadioGroup: ElRadioGroup, RadioButton: ElRadioGroup, diff --git a/src/components/Form/src/types/index.ts b/src/components/Form/src/types/index.ts index 402116d..a9f1e84 100644 --- a/src/components/Form/src/types/index.ts +++ b/src/components/Form/src/types/index.ts @@ -22,7 +22,8 @@ import { ISelectProps, UploadProps } from 'element-plus' -import { IEditorConfig } from '@wangeditor/editor' +// 仅类型引用:必须用 import type,否则会把整个 wang-editor 打进登录页的依赖链 +import type { IEditorConfig } from '@wangeditor/editor' import { CSSProperties } from 'vue' export interface PlaceholderModel { diff --git a/vite.config.mts b/vite.config.mts index fa5bcbc..b31af6d 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -139,7 +139,10 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { hmr: { overlay: false }, - host: '0.0.0.0' + // 必须同时监听 IPv6:Windows 上 localhost 先解析成 ::1, + // 只绑 0.0.0.0 会让每次新建连接都等 IPv6 超时(约 2s)再回退到 IPv4, + // 表现为页面白屏很久。'::' 是双栈,IPv4 局域网访问同样可用。 + host: '::' }, optimizeDeps: { include: [