import{_ as s,o as a,c as n,V as o}from"./chunks/framework.b31a4d00.js";const B=JSON.parse('{"title":"@fesjs/plugin-monaco-editor","description":"","frontmatter":{},"headers":[],"relativePath":"reference/plugin/plugins/editor.md"}'),l={name:"reference/plugin/plugins/editor.md"},p=o(`

@fesjs/plugin-monaco-editor

介绍

我们会遇到需要编辑代码的场景,比如编辑jsonjavascriptpython等等,Monaco Editor 是 \b 一个好用而且强大的的代码编辑器库,引入Monaco Editor有一定的成本,插件实现了胶水代码,提供轻松引入的能力。目前内置的 Monaco Editor 版本是 1.9.1

启用方式

package.json 中引入依赖:

json
{
    "dependencies": {
        "@fesjs/fes": "^3.0.0",
        "@fesjs/plugin-monaco-editor": "^3.0.0"
    }
}

编译时配置

在执行 fes dev 或者 fes build 时,通过此配置生成运行时的代码,在配置文件.fes.js 中配置:

js
export default {
    monacoEditor: {
        languages: ['javascript', 'typescript', 'html', 'json'],
    },
};

我们通过 monaco-editor-webpack-plugin 集成 Monaco EditorESM版本,所以编辑时其实就是 monaco-editor-webpack-plugin 的配置,具体配置项参考文档

filename

publicPath

languages

js
export default {
    monacoEditor: {
        languages: ['javascript', 'typescript'],
    },
};

API

monaco

编辑器的全局对象,提供扩展语言,自定义主题等等 API,具体用法请查看monaco官方文档。

js
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' },
    ],
});

组件 MonacoEditor

vue
<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>

props

属性说明类型默认值
theme编辑器的主题,使用其他主题需要先使用monaco.editor.defineTheme定义主题stringdefaultTheme
language编辑器的语言string-
height编辑器的高度string100%
width编辑器的宽度string100%
modelValue(v-model)编辑器的代码string-
readOnly是否只读booleanfalse
options编辑器的配置对象object{}
check是否检查代码,如果检查不通过则不更新数据,目前只支持jsonbooleanfalse

events

事件名称说明回调参数
onload编辑器初始化后触发({monaco, editor, editorModel}) => void
scrollChange滚动时触发(e) => void
`,27),e=[p];function t(c,r,D,F,y,i){return a(),n("div",null,e)}const h=s(l,[["render",t]]);export{B as __pageData,h as default};