当前位置:   article > 正文

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

vue3 代码编辑器

实现效果

实现效果

  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  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)
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

快速上手 Monaco-Editor

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

参数介绍

参数说明类型默认值可选值
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’
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/1000091
推荐阅读
相关标签
  

闽ICP备14008679号