From 4ae25b09c0454826031b8c657a83581a2c9a9324 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Wed, 5 Aug 2026 09:11:58 -0600 Subject: [PATCH] =?UTF-8?q?perf:=20skulpt=20=E6=94=B9=E4=B8=BA=E6=8C=89?= =?UTF-8?q?=E9=9C=80=E5=8A=A0=E8=BD=BD=EF=BC=8Cclient-zip=20=E6=8D=A2?= =?UTF-8?q?=E6=88=90=20fflate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit skulpt 此前被 SubmitCode.vue 静态引用,945K 的 chunk 落在做题页首屏, 学生打开任何一道题都要下 233KB gzip,只为提交时拿一个语法错误行号。 改成 import() 懒加载并在语言切到 Python3 时预取,加载失败放行提交、 交给后端判题兜底。构建产物确认该 chunk 只剩一处 import() 引用, index.html 不再引用。 client-zip 的能力 fflate 已经覆盖(utils/functions.ts 本就在用 zlibSync), 新增 createZipBlob 统一两处测试用例打包,删掉该依赖。压缩方式由 store 变为 deflate,Python zipfile 透明解压,后端不受影响。 Co-Authored-By: Claude Opus 5 --- package-lock.json | 30 ++++++++++---- package.json | 1 - .../problem/components/SQLTestcaseEditor.vue | 8 ++-- .../problem/components/TestcaseGenerator.vue | 9 ++--- src/oj/problem/components/SubmitCode.vue | 17 +++++++- src/oj/problem/utils/pythonSyntaxCheck.ts | 40 +++++++++++++++++-- src/utils/functions.ts | 25 +++++++++++- 7 files changed, 105 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f3198e..67526cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,6 @@ "canvas-confetti": "^1.9.4", "chart.js": "^4.5.1", "chartjs-chart-wordcloud": "^4.4.5", - "client-zip": "^2.5.0", "codemirror": "^6.0.2", "copy-text-to-clipboard": "^3.2.2", "date-fns": "^4.4.0", @@ -2116,6 +2115,29 @@ "vue": "^3.0.11" } }, + "node_modules/@emnapi/core": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/core/node_modules/@emnapi/wasi-threads": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", @@ -4589,12 +4611,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/client-zip": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/client-zip/-/client-zip-2.5.0.tgz", - "integrity": "sha512-ydG4nDZesbFurnNq0VVCp/yyomIBh+X/1fZPI/P24zbnG4dtC4tQAfI5uQsomigsUMeiRO2wiTPizLWQh+IAyQ==", - "license": "MIT" - }, "node_modules/codemirror": { "version": "6.0.2", "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.2.tgz", diff --git a/package.json b/package.json index 7390c58..0c829e0 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "canvas-confetti": "^1.9.4", "chart.js": "^4.5.1", "chartjs-chart-wordcloud": "^4.4.5", - "client-zip": "^2.5.0", "codemirror": "^6.0.2", "copy-text-to-clipboard": "^3.2.2", "date-fns": "^4.4.0", diff --git a/src/admin/problem/components/SQLTestcaseEditor.vue b/src/admin/problem/components/SQLTestcaseEditor.vue index 11e4167..f1aa2ba 100644 --- a/src/admin/problem/components/SQLTestcaseEditor.vue +++ b/src/admin/problem/components/SQLTestcaseEditor.vue @@ -1,6 +1,6 @@