Vue3代码编辑器monaco-edirot使用以及常见问题

实现效果

实现效果

  1. 可以动态添加多个编辑器
  2. 可以修改编辑器的语言
  3. 可以全屏编写

常见问题(写在前面)

  1. 如何全屏
const fullScreen = (id: number) => {
   //template.editors[id].editorObj 
   //这个就是你使用 monaco.editor.create() 这个函数得出的对象
  const element = template.editors[id].editorObj.getContainerDomNode()
  //将元素全屏
  element.requestFullscreen()
}
  1. 切换编辑器语言卡顿问题(看了许多大佬的博文,同样的方法我就是不行,但是由于我是多个编辑器的原因,而且变量是局部变量,可能被内存回收了;我的猜测)
//我的是多个编辑器所以我使用了数组,这里的Index是数组的下标
const initEditor = (index) => {
  //获取页面元素
  const element = document.getElementById(`edit${index}`)
  //创建编辑器
  const editor = monaco.editor.create(element, {
    value: template.form.files[index].content,
    language: 'go',
    theme: 'vs-dark',
    automaticLayout: true
  })
  //将编辑器放入数组中管理
  template.editors[index] = {
    language: 'go',
    editorObj: editor,
    //这个方法很重要我是通过这个方法来实现对语言的切换的
    changeLanguage: () => monaco.editor.setModelLanguage(editor.getModel(), template.editors[index].language)
  }
}

快速上手 Monaco-Editor

  1. 安装
    npm install monaco-editor
    
  2. 使用
    import * as monaco from 'monaco-editor'
    
  3. 创建编辑器
    <template>
    	<div id="editor" style="width:100%;height:100%"></div>
    </template>
    
    monaco.editor.create(document.getElemeentById('editor'),{
    	value: '', //编辑器内容
    	language: '', //语言
    	theme: 'vs-dark',//主题
    	automaticLayout: true,//自动适应大小
    })
    
    这样编辑器就创建好了

参数介绍

参数说明类型默认值可选值
value编辑器的初始值string--
theme编辑器的主题样式,除了提供的可选值外,也可以通过monaco.editor.defineTheme自定义主题string‘vs’‘vs’,‘vs-dark’,‘hc-black’
language编辑器的初始语言,例如可以设置为javascript, json等string-可使用 monaco.languages.getLanguages() 查看其他可选值
model和编辑器关联的初始模型ITextModel--
lineNumbers控制行数的渲染,如果是function,那么会使用return的内容作为行数展示string/Function‘on’‘on’,‘off’,‘relative’, ‘interval’, ‘(lineNumber: number) => string’
readOnly控制编辑器是否只读booleanfalse-
autoClosingBrackets自动闭合括号string‘languageDefined’‘always’/‘languageDefined’/‘beforeWhitespace’/‘never’
autoClosingOvertype自动闭合括号或引号string-‘always’/‘auto’/‘never’
autoClosingQuotes自动闭合引号string‘languageDefined’‘always’/‘languageDefined’/‘beforeWhitespace’/‘never’
autoIndent自动缩进string‘advanced’‘none’/‘keep’/‘brackets’/‘advanced’/‘full’
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值