关于编辑器的使用,网上一搜一大堆,这里不再赘述
这里主要介绍编辑器使用时,遇到的关键问题和痛点
语法解释器
需要使用webpack
插件monaco-editor-webpack-plugin
全局注册window.MonacoEnvironment
对象,供monaco
编辑器内核调度
根据当前编辑器的语言模式,读取对应的语法解释器worker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); new MonacoWebpackPlugin({ languages: ['json', 'javascript', 'typescript', 'yaml'], customLanguages: [ { label: 'yaml', entry: 'monaco-yaml/lib/esm/monaco.contribution', worker: { id: 'vs/language/yaml/yamlWorker', entry: 'monaco-yaml/lib/esm/yaml.worker.js' } } ] })
|
语法提示(低代码编辑使用)
参考
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
| monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({ noSemanticValidation: true, noSyntaxValidation: false });
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ target: monaco.languages.typescript.ScriptTarget.ES2016, allowNonTsExtensions: true, allowJs: true });
monaco.languages.typescript.javascriptDefaults.addExtraLib(` declare class getValue { /** * 这是什么 */ antd: { message:{ success:()=>void; } }, } `, 'filename/facts.d.ts' );
|
代码编辑时,需要加上这个注释
1 2 3 4 5 6
|
function getValue(event) { event.antd.message }
|