From f22b679ee01db5c23b8283b5fe44acafb8dfd3b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Tue, 9 Jun 2026 12:09:09 +0800 Subject: [PATCH] Reduce startup element plus payload --- .../web-ele/src/adapter/component/index.ts | 62 +++- web/apps/web-ele/src/api/request.ts | 2 +- web/apps/web-ele/src/api/stream-request.ts | 2 +- web/apps/web-ele/src/app.vue | 2 +- web/apps/web-ele/src/plugins/element-plus.ts | 327 +++++++++++------- web/apps/web-ele/src/router/access.ts | 2 +- web/apps/web-ele/src/store/auth.ts | 2 +- .../web-ele/src/utils/form-lifecycle-hooks.ts | 2 +- 8 files changed, 245 insertions(+), 156 deletions(-) diff --git a/web/apps/web-ele/src/adapter/component/index.ts b/web/apps/web-ele/src/adapter/component/index.ts index 4baa5bb..6cb0a02 100644 --- a/web/apps/web-ele/src/adapter/component/index.ts +++ b/web/apps/web-ele/src/adapter/component/index.ts @@ -19,23 +19,49 @@ import { ElCheckboxButton, ElCheckboxGroup, } from 'element-plus/es/components/checkbox/index'; -import { ElCascader } from 'element-plus/es/components/cascader/index'; -import { ElDatePicker } from 'element-plus/es/components/date-picker/index'; import { ElDivider } from 'element-plus/es/components/divider/index'; import { ElInput } from 'element-plus/es/components/input/index'; -import { ElInputNumber } from 'element-plus/es/components/input-number/index'; -import { ElNotification } from 'element-plus/es/components/notification/index'; import { ElRadio, ElRadioButton, ElRadioGroup, } from 'element-plus/es/components/radio/index'; -import { ElSelectV2 } from 'element-plus/es/components/select-v2/index'; import { ElSpace } from 'element-plus/es/components/space/index'; import { ElSwitch } from 'element-plus/es/components/switch/index'; -import { ElTimePicker } from 'element-plus/es/components/time-picker/index'; -import { ElTreeSelect } from 'element-plus/es/components/tree-select/index'; -import { ElUpload } from 'element-plus/es/components/upload/index'; + +const ElCascader = defineAsyncComponent(() => + import('element-plus/es/components/cascader/index').then( + (res) => res.ElCascader, + ), +); +const ElDatePicker = defineAsyncComponent(() => + import('element-plus/es/components/date-picker/index').then( + (res) => res.ElDatePicker, + ), +); +const ElInputNumber = defineAsyncComponent(() => + import('element-plus/es/components/input-number/index').then( + (res) => res.ElInputNumber, + ), +); +const ElSelectV2 = defineAsyncComponent(() => + import('element-plus/es/components/select-v2/index').then( + (res) => res.ElSelectV2, + ), +); +const ElTimePicker = defineAsyncComponent(() => + import('element-plus/es/components/time-picker/index').then( + (res) => res.ElTimePicker, + ), +); +const ElTreeSelect = defineAsyncComponent(() => + import('element-plus/es/components/tree-select/index').then( + (res) => res.ElTreeSelect, + ), +); +const ElUpload = defineAsyncComponent(() => + import('element-plus/es/components/upload/index').then((res) => res.ElUpload), +); const DeptSelector = defineAsyncComponent(() => import('#/components/zq-form/dept-selector/dept-selector.vue').then( @@ -87,7 +113,7 @@ const withDefaultPlaceholder = ( componentProps: Recordable = {}, ) => { return defineComponent({ - name: component.name, + name: (component as any).name, inheritAttrs: false, setup: (props: any, { attrs, expose, slots }) => { const placeholder = @@ -296,13 +322,17 @@ async function initComponentAdapter() { globalShareState.defineMessage({ // 复制成功消息提示 copyPreferencesSuccess: (title, content) => { - ElNotification({ - title, - message: content, - position: 'bottom-right', - duration: 0, - type: 'success', - }); + void import('element-plus/es/components/notification/index').then( + ({ ElNotification }) => { + ElNotification({ + title, + message: content, + position: 'bottom-right', + duration: 0, + type: 'success', + }); + }, + ); }, }); } diff --git a/web/apps/web-ele/src/api/request.ts b/web/apps/web-ele/src/api/request.ts index 7274eb7..0c65642 100644 --- a/web/apps/web-ele/src/api/request.ts +++ b/web/apps/web-ele/src/api/request.ts @@ -14,7 +14,7 @@ import { } from '@vben/request'; import { useAccessStore } from '@vben/stores'; -import { ElMessage } from 'element-plus'; +import { ElMessage } from 'element-plus/es/components/message/index'; import { useAuthStore } from '#/store'; diff --git a/web/apps/web-ele/src/api/stream-request.ts b/web/apps/web-ele/src/api/stream-request.ts index 8557495..9570808 100644 --- a/web/apps/web-ele/src/api/stream-request.ts +++ b/web/apps/web-ele/src/api/stream-request.ts @@ -1,7 +1,7 @@ import { preferences } from '@vben/preferences'; import { useAccessStore } from '@vben/stores'; -import { ElMessage } from 'element-plus'; +import { ElMessage } from 'element-plus/es/components/message/index'; import { useAuthStore } from '#/store'; diff --git a/web/apps/web-ele/src/app.vue b/web/apps/web-ele/src/app.vue index 1217658..a3e4e54 100644 --- a/web/apps/web-ele/src/app.vue +++ b/web/apps/web-ele/src/app.vue @@ -1,7 +1,7 @@