"use strict";(self.webpackChunkfes_js=self.webpackChunkfes_js||[]).push([[230],{6062:(n,s,a)=>{a.r(s),a.d(s,{data:()=>t});const t={key:"v-323bda7e",path:"/reference/plugin/plugins/editor.html",title:"@fesjs/plugin-monaco-editor",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"介绍",slug:"介绍",children:[]},{level:2,title:"启用方式",slug:"启用方式",children:[]},{level:2,title:"编译时配置",slug:"编译时配置",children:[{level:3,title:"filename",slug:"filename",children:[]},{level:3,title:"publicPath",slug:"publicpath",children:[]},{level:3,title:"languages",slug:"languages",children:[]}]},{level:2,title:"API",slug:"api",children:[{level:3,title:"monaco",slug:"monaco",children:[]},{level:3,title:"组件 MonacoEditor",slug:"组件-monacoeditor",children:[]}]}],filePathRelative:"reference/plugin/plugins/editor.md",git:{updatedTime:1680249231e3,contributors:[{name:"wanchun",email:"445436867@qq.com",commits:1}]}}},5846:(n,s,a)=>{a.r(s),a.d(s,{default:()=>w});var t=a(6252);const e=(0,t._)("h1",{id:"fesjs-plugin-monaco-editor",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#fesjs-plugin-monaco-editor","aria-hidden":"true"},"#"),(0,t.Uk)(" @fesjs/plugin-monaco-editor")],-1),p=(0,t._)("h2",{id:"介绍",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),(0,t.Uk)(" 介绍")],-1),o=(0,t._)("code",null,"json",-1),l=(0,t._)("code",null,"javascript",-1),r=(0,t._)("code",null,"python",-1),c={href:"https://github.com/Microsoft/monaco-editor",target:"_blank",rel:"noopener noreferrer"},i=(0,t._)("code",null,"Monaco Editor",-1),u=(0,t._)("code",null,"Monaco Editor",-1),d=(0,t._)("code",null,"1.9.1",-1),k=(0,t.uE)('

启用方式

package.json 中引入依赖:

{\n    "dependencies": {\n        "@fesjs/fes": "^2.0.0",\n        "@fesjs/plugin-monaco-editor": "^2.0.0"\n    },\n}\n
1
2
3
4
5
6

编译时配置

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

export default {\n    monacoEditor: {\n        languages: ['javascript', 'typescript', 'html', 'json']\n    }\n}\n
1
2
3
4
5
',6),b=(0,t._)("code",null,"monaco-editor-webpack-plugin",-1),h=(0,t._)("code",null,"Monaco Editor",-1),m=(0,t._)("code",null,"ESM",-1),g=(0,t._)("code",null,"monaco-editor-webpack-plugin",-1),f={href:"https://github.com/Microsoft/monaco-editor-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},y=(0,t.uE)('

filename

publicPath

languages

export default {\n    monacoEditor: {\n        languages: ['javascript', 'typescript']\n    }\n}\n
1
2
3
4
5

API

monaco

',9),v={href:"https://microsoft.github.io/monaco-editor/",target:"_blank",rel:"noopener noreferrer"},j=(0,t.uE)('
import { monaco } from '@fesjs/fes';\n\nmonaco.editor.defineTheme('myCoolTheme', {\n\tbase: 'vs',\n\tinherit: false,\n\trules: [\n\t\t{ token: 'custom-info', foreground: '808080' },\n\t\t{ token: 'custom-error', foreground: 'ff0000', fontStyle: 'bold' },\n\t\t{ token: 'custom-notice', foreground: 'FFA500' },\n\t\t{ token: 'custom-date', foreground: '008800' },\n\t]\n});\n\n
1
2
3
4
5
6
7
8
9
10
11
12
13

组件 MonacoEditor

<template>\n    <MonacoEditor \n        v-model="json"\n        language="json"\n        height="400px"\n        check>\n    </MonacoEditor>\n</template>\n<script>\nimport { MonacoEditor } from '@fesjs/fes';\nexport default {\n    components: {\n        MonacoEditor\n    },\n    setup(){\n        const json = ref('');\n        return {\n            json\n        };\n    }\n}\n</script>\n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

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
',7),q={},w=(0,a(3744).Z)(q,[["render",function(n,s){const a=(0,t.up)("OutboundLink");return(0,t.wg)(),(0,t.iD)(t.HY,null,[e,p,(0,t._)("p",null,[(0,t.Uk)("我们会遇到需要编辑代码的场景,比如编辑"),o,(0,t.Uk)("、"),l,(0,t.Uk)("、"),r,(0,t.Uk)("等等,"),(0,t._)("a",c,[(0,t.Uk)("Monaco Editor"),(0,t.Wm)(a)]),(0,t.Uk)(" 是\b一个好用而且强大的的代码编辑器库,引入"),i,(0,t.Uk)("有一定的成本,插件实现了胶水代码,提供轻松引入的能力。目前内置的 "),u,(0,t.Uk)(" 版本是 "),d,(0,t.Uk)("。")]),k,(0,t._)("p",null,[(0,t.Uk)("我们通过 "),b,(0,t.Uk)(" 集成 "),h,(0,t.Uk)(" 的 "),m,(0,t.Uk)("版本,所以编辑时其实就是 "),g,(0,t.Uk)(" 的配置,具体配置项参考"),(0,t._)("a",f,[(0,t.Uk)("文档"),(0,t.Wm)(a)]),(0,t.Uk)("。")]),y,(0,t._)("p",null,[(0,t.Uk)("编辑器的全局对象,提供扩展语言,自定义主题等等API,具体用法请查看"),(0,t._)("a",v,[(0,t.Uk)("monaco"),(0,t.Wm)(a)]),(0,t.Uk)("官方文档。")]),j],64)}]])},3744:(n,s)=>{s.Z=(n,s)=>{const a=n.__vccOpts||n;for(const[n,t]of s)a[n]=t;return a}}}]);