From 96a4b3114495bf67bceddf37288e0d68bc0e32a3 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Wed, 1 Apr 2026 01:17:48 +0800 Subject: [PATCH] feat: integrate Monaco Editor workers for enhanced code editing support fixes: #5587 --- dashboard/src/main.ts | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/dashboard/src/main.ts b/dashboard/src/main.ts index 4bfec5e77a..e1c736aa28 100644 --- a/dashboard/src/main.ts +++ b/dashboard/src/main.ts @@ -10,9 +10,33 @@ import VueApexCharts from 'vue3-apexcharts'; import print from 'vue3-print-nb'; import { loader } from '@guolao/vue-monaco-editor' +import * as monaco from 'monaco-editor'; +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; +import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; +import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'; +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; import axios from 'axios'; import { waitForRouterReadyInBackground } from './utils/routerReadiness.mjs'; +(self as any).MonacoEnvironment = { + getWorker(_: string, label: string) { + if (label === 'json') { + return new jsonWorker(); + } + if (label === 'css' || label === 'scss' || label === 'less') { + return new cssWorker(); + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return new htmlWorker(); + } + if (label === 'typescript' || label === 'javascript') { + return new tsWorker(); + } + return new editorWorker(); + }, +}; + // 初始化新的i18n系统,等待完成后再挂载应用 setupI18n().then(async () => { console.log('🌍 新i18n系统初始化完成'); @@ -112,8 +136,4 @@ window.fetch = (input: RequestInfo | URL, init?: RequestInit) => { return _origFetch(input, { ...init, headers }); }; -loader.config({ - paths: { - vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.54.0/min/vs', - }, -}) +loader.config({ monaco })