实现效果

实现效果

  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’
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐