From 6216e1cf22736180bae870c6c66e8a263097c3b4 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 12 Oct 2026 20:22:32 +0800 Subject: [PATCH] =?UTF-8?q?chore(=E4=BE=9D=E8=B5=96):=20=E5=88=A0=E6=8E=89?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E6=B2=A1=E7=94=A8=E5=88=B0=E7=9A=84=20vue-fl?= =?UTF-8?q?ow=20=E6=8F=92=E4=BB=B6=EF=BC=8C=E4=BB=A3=E7=A0=81=E9=AB=98?= =?UTF-8?q?=E4=BA=AE=E5=85=A8=E7=AB=99=E5=8F=AA=E6=B3=A8=E5=86=8C=E4=B8=80?= =?UTF-8?q?=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - @vue-flow/minimap、node-resizer、node-toolbar 一处引用都没有 - App.vue 给 n-code 另建了一份 highlight.js,还注册着判题机早就不认的 Java、 JavaScript、Go;改成空闲时加载 shared/highlight.ts 那份。62 条这三种语言的 历史提交改为不上色显示 Co-Authored-By: Claude Opus 5.5 --- apps/web/package.json | 3 --- apps/web/src/App.vue | 44 +++++--------------------------- apps/web/src/shared/highlight.ts | 5 +++- bun.lock | 25 ++++++------------ 4 files changed, 18 insertions(+), 59 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index d22380e..6071b83 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -24,9 +24,6 @@ "@vue-flow/background": "^1.3.2", "@vue-flow/controls": "^1.1.3", "@vue-flow/core": "^1.48.2", - "@vue-flow/minimap": "^1.5.4", - "@vue-flow/node-resizer": "^1.5.1", - "@vue-flow/node-toolbar": "^1.1.1", "@vueuse/core": "^15.0.0", "@vueuse/router": "^15.0.0", "@wangeditor-next/editor": "^6.5.0", diff --git a/apps/web/src/App.vue b/apps/web/src/App.vue index 4af7fdf..9a6ac7f 100644 --- a/apps/web/src/App.vue +++ b/apps/web/src/App.vue @@ -43,47 +43,15 @@ watch( { immediate: true }, ) -// 延迟加载 highlight.js,避免阻塞首屏 -const hljsInstance = ref(null) -const loadHighlightJS = async () => { - if (hljsInstance.value) return hljsInstance.value - - // 逐个取 .default,不要在 Promise.all 后面 map —— 那样元组会塌成 - // (HLJSApi | LanguageFn)[],每个元素都变成联合类型,hljs 上就找不到方法了 - const [core, c, cpp, python, java, javascript, go, sql] = await Promise.all([ - import("highlight.js/lib/core"), - import("highlight.js/lib/languages/c"), - import("highlight.js/lib/languages/cpp"), - import("highlight.js/lib/languages/python"), - import("highlight.js/lib/languages/java"), - import("highlight.js/lib/languages/javascript"), - import("highlight.js/lib/languages/go"), - import("highlight.js/lib/languages/sql"), - ]) - const hljs = core.default - - hljs.registerLanguage("c", c.default) - hljs.registerLanguage("python", python.default) - hljs.registerLanguage("cpp", cpp.default) - hljs.registerLanguage("java", java.default) - hljs.registerLanguage("javascript", javascript.default) - hljs.registerLanguage("go", go.default) - hljs.registerLanguage("sql", sql.default) - - hljsInstance.value = hljs - return hljs -} - -// 在空闲时预加载 +// n-code(提交详情、看代码的弹框)用的 highlight.js,空闲时再加载,不挡首屏 +const hljsInstance = shallowRef() onMounted(() => { - if ("requestIdleCallback" in window) { - requestIdleCallback(() => loadHighlightJS()) - } else { - setTimeout(() => loadHighlightJS(), 1000) + const load = async () => { + hljsInstance.value = (await import("shared/highlight")).hljs } + if ("requestIdleCallback" in window) requestIdleCallback(load) + else setTimeout(load, 1000) }) - -provide("hljs", hljsInstance)