chore(依赖): 删掉三个没用到的 vue-flow 插件,代码高亮全站只注册一份
- @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 <noreply@anthropic.com>
This commit is contained in:
1 parent
ea487bdc7b
commit
6216e1cf22
4 files changed
+18
-59
No files matched your search
@@ -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",
|
||||
|
||||
+6
-38
@@ -43,47 +43,15 @@ watch(
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
// 延迟加载 highlight.js,避免阻塞首屏
|
||||
const hljsInstance = ref<any>(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<typeof import("shared/highlight").hljs>()
|
||||
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)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/**
|
||||
* 代码高亮:自学的练一练、以及 Markdown.vue 里的代码块共用这一份(配色在 highlight.css)。
|
||||
* 代码高亮:自学的练一练、Markdown.vue 里的代码块、以及 App.vue 交给 n-code 的都是这一份
|
||||
* (配色在 highlight.css)。
|
||||
* 只注册判题机认的几种语言,别的语言和不标语言的代码块按原文显示。
|
||||
*/
|
||||
import hljs from "highlight.js/lib/core"
|
||||
@@ -13,6 +14,8 @@ hljs.registerLanguage("c", c)
|
||||
hljs.registerLanguage("cpp", cpp)
|
||||
hljs.registerLanguage("sql", sql)
|
||||
|
||||
export { hljs }
|
||||
|
||||
const LANGUAGE_ALIASES: Record<string, string> = {
|
||||
python: "python",
|
||||
py: "python",
|
||||
|
||||
Reference in new issue
Block a user