From 13ed3a8fe4b0618a01d23049196db8a06e655316 Mon Sep 17 00:00:00 2001 From: Frost-ZX Date: Sat, 3 Jan 2026 19:04:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E5=B7=A5=E5=85=B7=E7=AE=B1):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91=EF=BC=8C=E6=8F=90=E5=8F=96?= =?UTF-8?q?=20MonacoEnvironment=20=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/js/monaco-editor.js | 21 +++++++++++++++++++ src/views/ToolboxView/Edit/JsonEditor.vue | 21 +++++-------------- src/views/ToolboxView/Edit/TextEditor.vue | 15 +++++-------- src/views/ToolboxView/Other/RunJavaScript.vue | 20 +++++------------- 4 files changed, 36 insertions(+), 41 deletions(-) create mode 100644 src/assets/js/monaco-editor.js diff --git a/src/assets/js/monaco-editor.js b/src/assets/js/monaco-editor.js new file mode 100644 index 0000000..9d50854 --- /dev/null +++ b/src/assets/js/monaco-editor.js @@ -0,0 +1,21 @@ +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; + +/** 初始化 MonacoEnvironment */ +export function initMonacoEnvironment() { + if (!self.MonacoEnvironment) { + // 配置编辑器环境(Service Worker 等) + self.MonacoEnvironment = { + getWorker(workerId, label) { + if (label === 'javascript' || label === 'typescript') { + return new tsWorker(); + } else if (label === 'json') { + return new jsonWorker(); + } else { + return new editorWorker(); + } + }, + }; + } +} diff --git a/src/views/ToolboxView/Edit/JsonEditor.vue b/src/views/ToolboxView/Edit/JsonEditor.vue index e2aa440..4c2ca8c 100644 --- a/src/views/ToolboxView/Edit/JsonEditor.vue +++ b/src/views/ToolboxView/Edit/JsonEditor.vue @@ -16,24 +16,12 @@ import { onBeforeUnmount, onMounted, } from 'vue'; +import { + initMonacoEnvironment, +} from '@/assets/js/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'; - -// 配置编辑器环境(Service Worker 等) -if (!self.MonacoEnvironment) { - self.MonacoEnvironment = { - getWorker(workerId, label) { - if (label === 'json') { - return new jsonWorker(); - } else { - return new editorWorker(); - } - }, - }; -} - /** 模块名称 */ const PREFIX = '[JsonEditor]'; @@ -126,6 +114,7 @@ function resetEditor() { } onMounted(() => { + initMonacoEnvironment(); initEditor(); window.addEventListener('resize', handleWindowResize); }); diff --git a/src/views/ToolboxView/Edit/TextEditor.vue b/src/views/ToolboxView/Edit/TextEditor.vue index d0ae83c..21731e6 100644 --- a/src/views/ToolboxView/Edit/TextEditor.vue +++ b/src/views/ToolboxView/Edit/TextEditor.vue @@ -47,21 +47,15 @@ import { useFileDialog, } from '@vueuse/core'; +import { + initMonacoEnvironment, +} from '@/assets/js/monaco-editor'; + import { $dialog, $message, } from '@/assets/js/naive-ui'; import * as monaco from 'monaco-editor'; -import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; - -// 配置编辑器环境(Service Worker 等) -if (!self.MonacoEnvironment) { - self.MonacoEnvironment = { - getWorker() { - return new editorWorker(); - }, - }; -} /** 模块名称 */ const PREFIX = '[TextEditor]'; @@ -220,6 +214,7 @@ fileOnChange((files) => { }); onMounted(() => { + initMonacoEnvironment(); initEditor(); window.addEventListener('resize', handleWindowResize); }); diff --git a/src/views/ToolboxView/Other/RunJavaScript.vue b/src/views/ToolboxView/Other/RunJavaScript.vue index 1475642..0f0a5e4 100644 --- a/src/views/ToolboxView/Other/RunJavaScript.vue +++ b/src/views/ToolboxView/Other/RunJavaScript.vue @@ -49,26 +49,15 @@ import { onBeforeUnmount, onMounted, } from 'vue'; +import { + initMonacoEnvironment, +} from '@/assets/js/monaco-editor'; + import { $dialog, $message, } from '@/assets/js/naive-ui'; import * as monaco from 'monaco-editor'; -import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; -import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; - -// 配置编辑器环境(Service Worker 等) -if (!self.MonacoEnvironment) { - self.MonacoEnvironment = { - getWorker(workerId, label) { - if (label === 'javascript' || label === 'typescript') { - return new tsWorker(); - } else { - return new editorWorker(); - } - }, - }; -} /** 模块名称 */ const PREFIX = '[RunJavaScript]'; @@ -259,6 +248,7 @@ function updateEditorContent(text = '') { } onMounted(() => { + initMonacoEnvironment(); initEditor(); window.addEventListener('resize', handleWindowResize); });