在前端工程中可以用 @monaco-editor/loader
来引入 Monaco,但有时候我们的前端项目不依赖 Webpack、Vite 等打包工具,如何在普通网页中用纯 CDN 的方式引入 Monaco Editor?
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8" /> <title>Monaco Editor</title> <style> body { margin: 0; padding: 0; } #editor { width: 100vw; height: 100vh; } </style> </head> <body> <div id="editor"></div> <script src="https://registry.npmmirror.com/monaco-editor/0.52.2/files/min/vs/loader.js"></script> <script> require.config({ paths: { vs: "https://registry.npmmirror.com/monaco-editor/0.52.2/files/min/vs", }, }); window.MonacoEnvironment = { getWorkerUrl: function (workerId, label) { return `data:text/javascript;charset=utf-8,${encodeURIComponent( 'self.MonacoEnvironment={baseUrl:"https://registry.npmmirror.com/monaco-editor/0.52.2/files/min/"};' + 'importScripts("https://registry.npmmirror.com/monaco-editor/0.52.2/files/min/vs/base/worker/workerMain.js");' )}`; }, }; require(["vs/editor/editor.main"], function () { const editorElement = document.getElementById("editor"); const editor = monaco.editor.create(editorElement, { value: "function main() {\n console.log('Hello, iMaeGoo!');\n}\n\nmain();\n", language: "javascript", }); window.addEventListener("resize", () => editor.layout({ width: editorElement.offsetWidth, height: editorElement.offsetHeight, }) ); }); </script> </body> </html>
|
效果