import{_ as o,r as p,o as c,c as l,b as s,d as n,a as t,f as e}from"./app.bd9c95b7.js";const i={},r=s("h1",{id:"fesjs-plugin-monaco-editor",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-monaco-editor","aria-hidden":"true"},"#"),n(" @fesjs/plugin-monaco-editor")],-1),d=s("h2",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),n(" 介绍")],-1),u=s("code",null,"json",-1),k=s("code",null,"javascript",-1),h=s("code",null,"python",-1),v={href:"https://github.com/Microsoft/monaco-editor",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"Monaco Editor",-1),g=s("code",null,"Monaco Editor",-1),b=s("code",null,"1.9.1",-1),f=e(`
在 package.json
中引入依赖:
{
"dependencies": {
"@fesjs/fes": "^3.0.0",
"@fesjs/plugin-monaco-editor": "^3.0.0"
}
}
在执行 fes dev
或者 fes build
时,通过此配置生成运行时的代码,在配置文件.fes.js
中配置:
export default {
monacoEditor: {
languages: ['javascript', 'typescript', 'html', 'json'],
},
};
'[name].worker.js'
''
类型:需要支持的语言类型
默认值:['abap', 'apex', 'azcli', 'bat', 'bicep', 'cameligo', 'clojure', 'coffee', 'cpp', 'csharp', 'csp', 'css', 'dart', 'dockerfile', 'ecl', 'elixir', 'fsharp', 'go', 'graphql', 'handlebars', 'hcl', 'html', 'ini', 'java', 'javascript', 'json', 'julia', 'kotlin', 'less', 'lexon', 'liquid', 'lua', 'm3', 'markdown', 'mips', 'msdax', 'mysql', 'objective-c', 'pascal', 'pascaligo', 'perl', 'pgsql', 'php', 'postiats', 'powerquery', 'powershell', 'pug', 'python', 'qsharp', 'r', 'razor', 'redis', 'redshift', 'restructuredtext', 'ruby', 'rust', 'sb', 'scala', 'scheme', 'scss', 'shell', 'solidity', 'sophia', 'sparql', 'sql', 'st', 'swift', 'systemverilog', 'tcl', 'twig', 'typescript', 'vb', 'xml', 'yaml']
详情:默认是全部,但是编译后包体积会非常大,建议用到什么语言则配置什么语言。特别某些语言依赖其他语言,例如javascript
依赖typescript
,需要使用javascript
时需要配置为:
export default {
monacoEditor: {
languages: ['javascript', 'typescript'],
},
};
import { monaco } from '@fesjs/fes';
monaco.editor.defineTheme('myCoolTheme', {
base: 'vs',
inherit: false,
rules: [
{ token: 'custom-info', foreground: '808080' },
{ token: 'custom-error', foreground: 'ff0000', fontStyle: 'bold' },
{ token: 'custom-notice', foreground: 'FFA500' },
{ token: 'custom-date', foreground: '008800' },
],
});
<template>
<MonacoEditor v-model="json" language="json" height="400px" check> </MonacoEditor>
</template>
<script>
import { MonacoEditor } from '@fesjs/fes';
export default {
components: {
MonacoEditor,
},
setup() {
const json = ref('');
return {
json,
};
},
};
</script>
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
theme | 编辑器的主题,使用其他主题需要先使用monaco.editor.defineTheme 定义主题 | string | defaultTheme |
language | 编辑器的语言 | string | - |
height | 编辑器的高度 | string | 100% |
width | 编辑器的宽度 | string | 100% |
modelValue(v-model) | 编辑器的代码 | string | - |
readOnly | 是否只读 | boolean | false |
options | 编辑器的配置对象 | object | {} |
check | 是否检查代码,如果检查不通过则不更新数据,目前只支持json | boolean | false |
事件名称 | 说明 | 回调参数 |
---|---|---|
onload | 编辑器初始化后触发 | ({monaco, editor, editorModel}) => void |
scrollChange | 滚动时触发 | (e) => void |