From 351fcdb4ec6bcbdbbfb1c39767cedd1c5221ffbf Mon Sep 17 00:00:00 2001 From: Zhang Jing Xuan <17660634225@163.com> Date: Thu, 30 Jul 2026 11:17:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=87=92=E5=8A=A0=E8=BD=BDTemplateGall?= =?UTF-8?q?ery=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=89=A9=E5=B1=95=E5=8A=A8?= =?UTF-8?q?=E7=94=BB=E7=B1=BB=E5=9E=8B=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将Animation/Exercise/CoursewareDetail中的TemplateGallery改为异步组件加载 减少页面初始加载体积,仅在用户打开模板库时才加载294KB的游戏模板代码 - 为教学动画添加更多学科类型:语文、英语、历史,同时更新typeLabel映射 --- frontend/src/views/Animation.vue | 5 ++++- frontend/src/views/CoursewareDetail.vue | 2 +- frontend/src/views/Exercise.vue | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/Animation.vue b/frontend/src/views/Animation.vue index 7699faa..3d3fd1f 100644 --- a/frontend/src/views/Animation.vue +++ b/frontend/src/views/Animation.vue @@ -208,7 +208,7 @@ import { exportHtml } from '@/api/ai' import { publishResource } from '@/api/resource' import HtmlPreview from '@/components/common/HtmlPreview.vue' import MaterialPicker from '@/components/common/MaterialPicker.vue' -import TemplateGallery from '@/components/common/TemplateGallery.vue' +const TemplateGallery = defineAsyncComponent(() => import('@/components/common/TemplateGallery.vue')) import { useUserStore } from '@/stores/user' import { downloadBlob } from '@/utils/download' import { buildMaterialPromptBlock, type MaterialContextItem } from '@/utils/materialContext' @@ -544,6 +544,9 @@ function typeLabel(type: string) { chemistry: '化学', biology: '生物', geography: '地理', + chinese: '语文', + english: '英语', + history: '历史', general: '通用', } return map[type] || '通用' diff --git a/frontend/src/views/CoursewareDetail.vue b/frontend/src/views/CoursewareDetail.vue index 00a9a41..bbcb23d 100644 --- a/frontend/src/views/CoursewareDetail.vue +++ b/frontend/src/views/CoursewareDetail.vue @@ -169,7 +169,7 @@ import { exportHtml } from '@/api/ai' import { createCoursewareShare, exportCoursewareDocx, getCourseware, updateCourseware } from '@/api/courseware' import { publishResource } from '@/api/resource' import HtmlPreview from '@/components/common/HtmlPreview.vue' -import TemplateGallery from '@/components/common/TemplateGallery.vue' +const TemplateGallery = defineAsyncComponent(() => import('@/components/common/TemplateGallery.vue')) import { downloadBlob } from '@/utils/download' import { coursewareThemes, applyThemeToPage, detectPageTheme, getTheme } from '@/utils/coursewareThemes' diff --git a/frontend/src/views/Exercise.vue b/frontend/src/views/Exercise.vue index 0fe038f..c17b704 100644 --- a/frontend/src/views/Exercise.vue +++ b/frontend/src/views/Exercise.vue @@ -289,7 +289,7 @@ import { aiGenerateExercise, createExercise, deleteExercise, exportExerciseDocx, import { publishResource } from '@/api/resource' import MarkdownContent from '@/components/common/MarkdownContent.vue' import HtmlPreview from '@/components/common/HtmlPreview.vue' -import TemplateGallery from '@/components/common/TemplateGallery.vue' +const TemplateGallery = defineAsyncComponent(() => import('@/components/common/TemplateGallery.vue')) import MaterialPicker from '@/components/common/MaterialPicker.vue' import { useUserStore } from '@/stores/user' import { downloadBlob } from '@/utils/download'