代码编辑器之monaco editor

这篇具有很好参考价值的文章主要介绍了代码编辑器之monaco editor。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MonacoEditor编辑器

(一)简介

底层vscode开发的一款编辑器,各方面的样式功能基本与vscode一致。

(二)官方文档

Monaco Editor (microsoft.github.io)

(三)安装

安装时两者版本要对应,对应表在后面

npm install monaco-editor@0.30.1 --save-dev
npm install monaco-editor-webpack-plugin@6.0.0 --save-dev

(四)属性

以下是较为常见的属性

value: this.editorValue, // 编辑器初始显示文字
theme: 'CodeSampleTheme', // 官方自带三种主题vs, hc-black, or vs-dark
language: this.lang, // 语言支持自行查阅demo
overviewRulerBorder: false, // 滚动是否有边框
automaticLayout: true, // 自动布局
readOnly: false, // 是否只读
minimap: { // 关闭代码缩略图
  enabled: false // 是否启用预览图
},
lineNumbers: 'off', // 控制行号的显隐
scrollBeyondLastLine: false, // 禁用额外滚动区
scrollbar: {
  verticalScrollbarSize: 4, // 垂直滚动条宽度,默认px
  horizontalScrollbarSize: 4 // 水平滚动条高度
},
contextmenu: false // 禁用右键菜单

(五) 方法

挑选出使用频次较高的

  • monaco.editor.setTheme(‘主题色名字’)    设置编辑器主题色
  • this.editor.setModel(newModel)    将当前编辑器设置一个新的编辑器,当然在这之前需要声明一个新的编辑器,如下所示
    const newModel = monaco.editor.createModel(
      data, // 值
      this.lang // 语言
    )
    this.editor.setModel(newModel)
  • this.editor.getValue()   获取当前编辑器的值

  • this.editor.setValue()   设置当前编辑器的值

(六)使用方法

vue2(不建议,会存在问题,下面会交代):

  1. 安装依赖,参考(
  2. 修改webpack.base.conf.js配置文件     

monaco-editor,编辑器,javascript,vue.js

vue3(建议使用):

  1. 安装依赖,参考(三)
  2. 修改vue.config.js配置文件

monaco-editor,编辑器,javascript,vue.js

(七)遇到的问题

vue2:挂载插件存在问题,目前还未寻找到合适的解决方法,故建议vue2使用AceEditor编辑器

monaco-editor,编辑器,javascript,vue.js

vue3:

  1. Cannot find module ‘vs/editor/contrib/inlineHints/inlineHintsController’

monaco-editor和monaco-editor-webpack-plugin版本不匹配

monaco-editor,编辑器,javascript,vue.js

图 对应表

  1. Unexpected usage at EditorSimpleWorker.loadForeignModule

monaco-editor,编辑器,javascript,vue.js

(八)代码应用

monacoEditor公共组件封装

<template>
  <div ref="editor" class="editor"></div>
</template>
<script>
import * as monaco from 'monaco-editor'
export default {
  props: {
    // 根据传过来的数据来设置编辑器语言
    lang: {
      type: String,
      default: ''
    },
    // 根据传过来的数据来设置编辑器的值
    val: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      editor: null,
      editorValue: this.val, // 编辑器的值
      editorShow: false
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    init() {
      // 初始化编辑器
      this.editor = monaco.editor.create(this.$refs.editor, {
        value: this.editorValue, // 编辑器初始显示文字
        theme: 'CodeSampleTheme', // 官方自带三种主题vs, hc-black, or vs-dark
        language: this.lang, // 语言支持自行查阅demo
        overviewRulerBorder: false, // 滚动是否有边框
        automaticLayout: true, // 自动布局
        readOnly: false, // 是否只读
        minimap: { // 关闭代码缩略图
          enabled: false // 是否启用预览图
        },
        lineNumbers: 'off', // 控制行号的显隐
        scrollBeyondLastLine: false, // 禁用额外滚动区
        scrollbar: {
          verticalScrollbarSize: 4, // 垂直滚动条宽度,默认px
          horizontalScrollbarSize: 4 // 水平滚动条高度
        },
        contextmenu: false // 禁用右键菜单
      })
      // 自定义主题背景色
      monaco.editor.defineTheme('CodeSampleTheme', {
        base: 'vs',
        inherit: true,
        rules: [{ background: '#F6F6F7' }],
        colors: {
          // 相关颜色属性配置
          'editor.background': '#F6F6F7' // 背景色
        }
      })
      // 监听内容变化
      this.editor.onDidChangeModelContent(() => {
      })
      // 监听失去焦点事件
      this.editor.onDidBlurEditorText((e) => {
      })
    },
    // 设置并获取monaco编辑器的值
    setEditorValue (data) {
      const newModel = monaco.editor.createModel(
        data, // 值
        this.lang // 语言
      )
      this.editor.setModel(newModel)
      // 设置自定义的主题背景色
      monaco.editor.setTheme('CodeSampleTheme')
      // 获取monaco编辑器的值
      this.editorValue = this.editor.getValue()
      if (this.editorValue) {
        this.editorShow = true
      }
    }
  }
}
</script>
<style scoped lang="scss">
.editor {
  width: 100%;
  min-height: 100px;
}
</style>

其他组件中引用monacoEditor公共组件

monaco-editor,编辑器,javascript,vue.js

其他组件中调用monacoEditor公共组件的方法和属性

this.$nextTick(_ => {
  this.$refs.codeEditor.setEditorValue(newValue) // 调用monaco组件的方法,设置monaco编辑器的值
  this.codeEditorShow = this.$refs.codeEditor.editorShow // 调用monaco组件的data,控制monaco编辑器的显隐
})
  • 效果展示

monaco-editor,编辑器,javascript,vue.js文章来源地址https://www.toymoban.com/news/detail-831426.html

到了这里,关于代码编辑器之monaco editor的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Monaco Editor编辑器教程(二八):Monaco 与 VS Code 两个项目的联系与异同点

    很多人知道前端代码编辑Monaco Editor 与VS Code 有关系,但却不清楚其中的细节,本篇文章就带大家了解一下两者的关系和异同点。 首先,这两个项目都是来自微软,其中VS Code 项目Github 144K star,是基于CS架构,客户端-服务端架构。主要的技术栈是 elector,ts。 而Monaco Editor则是

    2023年04月27日
    浏览(33)
  • Monaco Editor教程(二十):在编辑器的某个特定位置插入自定义的dom内容,图片,表单,表格,视频

    哇咔咔,这是我的第20篇Monaco教程,写完这一篇会暂时休息一段时间,练练字,存存稿,读读书,顺便修修文章。 目前全网成系统的monaco中文专栏应该只有我这一个,欢迎评论区打脸。自结束了GitLab CI/CD的专栏后,我就一直在利用业余时间学习Monaco相关的知识,一是为了弥补

    2023年04月16日
    浏览(44)
  • 【一个好用的智能编辑器】用于写代码很智能。Cursor代码编辑器。Cursor官网地址。

    这个编辑器发展非常快,只可惜你必须懂英文,当然,你使用少量翻译软件也可以不用懂英文的情况下仍然可以快乐的使用它。 今天在另一台机器想下载Cursor编辑器,在度娘那里竟然找不到它的地址。其中有一个微博说有分享地址,结果原来在标题~~算我眼瞎。。。。。不过

    2024年02月17日
    浏览(48)
  • 修改unity代码编辑器

    将   Unity  自带的 MonoDevelop  替换成微软的 VS  2017 编辑器。 操作步骤 : 第一步:选择Edit选项卡下的Preferences..选项 第二步:选择External Tools 第三步:修改右侧的External Script Editor,选择VS2017  有的小伙伴可能下拉框中没有VS2017选项,没关系,点击Brower..,找到VS2017的应用程序

    2024年02月11日
    浏览(39)
  • 实现一个python代码编辑器

    代码编辑器采用了monacoEditor,一个现成的编辑器。网上有很多文档介绍和开源项目,但是怎么说呢,跟着做,可以实现一个网页编辑器,可以高亮python的语法,但是没有python的提示,找不到可以参考的,js我也不会,看的着实云里雾里。 【提示】在VsCode上运行比较方便 -----

    2024年02月21日
    浏览(49)
  • linux代码编辑器——vim

    一款编辑器,只负责写代码 当我们 使用 vim +文件名 进入文件中时, 发现一些按键 按了没有反应 这是因为vim是一个多模式的编辑器, 默认在命令模式下,按键都被当做命令了 1.命令模式转换到插入模式 1. a 输入a后,光标会向后移一位 2. i 使用i从命令模式转换到插入模式,

    2024年01月20日
    浏览(61)
  • Visual Studio 设置编辑框(即代码编辑器)的背景颜色

    在Visual Studio 中设置编辑框(即代码编辑器)的背景颜色,可以按照以下步骤进行: 打开Visual Studio。 在菜单栏上找到并点击“工具”(Tools)选项。 在下拉菜单中选择“选项”(Options)。 在“选项”对话框中,导航至“环境”(Environment)类别。 在环境类别中,点击“字体和颜色”

    2024年01月21日
    浏览(48)
  • 在线代码编辑器code-server

    今天是上海浦西全域静态管理的第 32 天。祝大家 5.1 假期 “无疫” 快乐! 周五、周六休息,没做核酸也没做抗原,周日、周一抗原。 周六再次迎来了降级,小区从管控区降为了防范区,不过还是按管控区管理,反正就是不能出小区,也许防范区是给未来的解封准备的吧。

    2024年02月04日
    浏览(59)
  • 使用VSCode作为Unity的代码编辑器

                    Unity在选择IDE 的时候其实也有很多选择,在 Windows 上我会选择 Visual Studio 或者是 VS Code ,在编程体验上来讲我更喜欢 Visual Studio 。但是在 Mac OS 可能 Visual Studio Mac 版本并非是一个靠谱的选择,它和 Rider 一样都过于笨重,编程体验比较卡顿,于是我还是

    2024年02月08日
    浏览(54)
  • sublime Test代码编辑器切换中文方法

    1、在打开的软件界面按 Ctrl+shift+P 调出来对话框,然后输入 installpackage control 2、选择 Package Control:install Package 然后等待安装十几秒就可以了 3、再次按住 Ctrl+shift+P 调出对话框,搜索 Package Control:install Package 然后等待二十几秒 4、在弹出的对话框中输入 Chinese ,选择 Chines

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包