先说一下monaco。什么、monaco?好吧,我们换个名字,vscode浏览器端的线上Ide。强大得代码提示,统一的编码风格,的确让我觉得很。把ide植入我开发的可视化搭建ide的时候,我吐了,整整15Mb的包,webpack打包瞬间内存溢出,就算强行扩内存,整个打包过程也要持续个2-5分钟。
必须优化,说干就干。开始正文
webpack 引入externals
。嗯?2020年了,你还不懂webpack?请移步https://www.webpackjs.com/con...
externals必须找到cdn文件,但是当你打开monaco 官网。cdn?什么cdn?https://microsoft.github.io/m...。全篇只有api没有cdn。好吧,我自己取,在官方示例中寻找整个cdn引入最终找到
好了,万事大吉。嗯?卧槽,代码提示功能没有了,在官方示例中是有的。庆幸在试了几次后找到有效代码
require.config({ paths: { 'vs': 'https://unpkg.alibaba-inc.com/monaco-editor@0.20.0/min/vs' }});
// Before loading vs/editor/editor.main, define a global MonacoEnvironment that overwrites
// the default worker url location (used when creating WebWorkers). The problem here is that
// HTML5 does not allow cross-domain web workers, so we need to proxy the instantiation of
// a web worker through a same-domain script
window.MonacoEnvironment = {
getWorkerUrl: function(workerId, label) {
return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
self.MonacoEnvironment = {
baseUrl: 'https://unpkg.alibaba-inc.com/monaco-editor@0.20.0/min/'
};
importScripts('https://unpkg.alibaba-inc.com/monaco-editor@0.20.0/min/vs/base/worker/workerMain.js');`
)}`;
}
};
require(["vs/editor/editor.main"], function () {
// ...
});
全局引入即可
依然要自己封装monaco
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。