我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue2.x中monaco-editor的使用说明

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue2.x中monaco-editor的使用说明

vue2中使用monaco-editor

安装

注意两个库的版本指定

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

配置

vue.config.js中配置

const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
module.exports = {
  configureWebpack: {
    plugins: [
      new MonacoWebpackPlugin()
    ]
  }
}

创建MonacoEditor公共组件

<template>
  <div ref="editorContainer" class="editor"></div>
</template>
<script>
import * as monaco from 'monaco-editor';
export default {
  name: 'MonacoEditor',
  data() {
    return {
      code: '',
      editor: null
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    init() {
      // 初始化编辑器
      this.editor = monaco.editor.create(this.$refs.editorContainer, {
        value: this.code,
        language: 'javascript',
        tabSize: 2,
        scrollBeyondLastLine: false,
        automaticLayout: true, // 自动布局
        readOnly: false
      })
      console.log(this.editor)
      // 监听内容变化
      this.editor.onDidChangeModelContent(() => {
      })
      // 监听失去焦点事件
      this.editor.onDidBlurEditorText((e) => {
        console.log(e)
      });
    },
    // 获取编辑框内容
    getCodeContext() {
      return this.editor.getValue()
    },
    // 自动格式化代码
    format() {
      this.editor.trigger('anything', 'editor.action.formatDocument')
      // 或者
      // this.editor.getAction(['editor.action.formatDocument']).run()
    },
    changeEditor() {
      if (this.editor === null) {
        this.init()
      }
      const oldModel = this.editor.getModel()
      const newModel = monaco.editor.createModel(
        this.code,
        'javascript'
      )
      if (oldModel) {
        oldModel.dispose()
      }
      this.editor.setModel(newModel)
    }
  }
}
</script>
<style scoped>
.editor {
  width: 100%;
  min-height: 400px;
}
</style>

父组件中使用

<template>
  <div>
    <monaco-editor></monaco-editor>
  </div>
</template>
<script>
import MonacoEditor from '@/components/MonacoEditor'
export default {
  name: 'Test6',
  components: {
    MonacoEditor
  }
}
</script>

使用vue-monaco-editor遇到的坑

编辑器重复加载上次编辑器中的内容,不会被新的内容替代

直接上代码

给MonacoEditor加上属性key

      <MonacoEditor
        width="100%"
        height="537"
        :key="randomkey"
        language="html"
        theme="vs-dark"
        :code="code"
      >
      </MonacoEditor>

每次重新给code赋值时,就重新获取一次随机数赋值给key

data() {
    return {
      randomkey: 123,
    }
  }
methods: {
    // 每次重新给code赋值时,就重新调用一下下面这个方法
    createRandomkey(){
      this.randomkey = Math.floor(Math.random()*(10,1000000012313))
    },
}

编辑器editorOptions上的配置无法生效

<MonacoEditor
        width="100%"
        height="537"
        :key="randomkey"
        language="html"
        theme="vs-dark"
        :code="code"
        :editorOptions="options"
        @mounted="seeOnMounted"
>
// 在data中设置无法生效
options: {
     readOnly: true
},

可以在@mounted方法中根据editor进行设置

seeOnMounted(editor) {
      this.seeEditor = editor
      this.seeEditor.updateOptions({
        readOnly: true, //是否只读
      })
    },

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue2.x中monaco-editor的使用说明

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue2.x中monaco-editor的使用说明

这篇文章主要介绍了vue2.x中monaco-editor的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

vue2.x,vue3.x使用provide/inject注入的区别说明

这篇文章主要介绍了vue2.x,vue3.x使用provide/inject注入的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-17

Vue富文本插件(quill-editor)的使用及说明

这篇文章主要介绍了Vue富文本插件(quill-editor)的使用及说明,具有很好的参考价值,希望对大家有所帮助。
2023-02-18

vue3中Vant的使用及说明

这篇文章主要介绍了vue3中Vant的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-16

js中的WebSocket使用及说明

WebSocket是一种实时、低延迟的通信协议,允许客户端与服务器之间双向数据交换,弥补了传统HTTP请求-响应模型的局限性。它具有实时通信、低延迟、双向通信和低开销的优点,广泛用于聊天、实时数据流、多人游戏、物联网和协作工具等应用场景。要使用WebSocket,需要建立连接,收发消息,并使用API管理连接,包括open、send、close、onmessage、onerror等方法和事件。
js中的WebSocket使用及说明
2024-04-02

C#中Stopwatch的使用及说明

这篇文章主要介绍了C#中Stopwatch的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-25

PyTorch中grid_sample的使用及说明

这篇文章主要介绍了PyTorch中grid_sample的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-01

Keras中Conv1D的使用及说明

这篇文章主要介绍了Keras中Conv1D的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-15

node.js中的path.normalize方法使用说明

方法说明: 输出规范格式的path字符串。 语法:path.normalize(p)由于该方法属于path模块,使用前需要引入path模块(var path= require(“path”) ) 例子:path.normalize('/fo
2022-06-04

node.js中的console.timeEnd方法使用说明

方法说明: 完成时间,执行 console.time 到 console.timeEnd 之间所花费的时间。 语法:console.timeEnd(label)接收参数: Label 与开始时间 console.lo
2022-06-04

node.js中的console.warn方法使用说明

方法说明: 该方法与 console.error() 相同。看源码就知道,console.error其实就是直接调用console.warn的 语法:console.warn([data], [...])接收参数: console.log接
2022-06-04

node.js中的fs.mkdirSync方法使用说明

方法说明: 同步版的 fs.mkdir() 。 语法:fs.mkdirSync(path, [mode])由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) ) 接收参数: path
2022-06-04

node.js中的fs.readdir方法使用说明

方法说明: 以异步的方式读取文件目录。 语法:fs.readdir(path, [callback(err,files)])由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) ) 接收参数: pat
2022-06-04

node.js中的fs.close方法使用说明

方法说明: 以异步的方式关闭文件。 语法:fs.close(fd, [callback(err)])由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) ) 接收参数: fd
2022-06-04

node.js中的fs.openSync方法使用说明

方法说明: 同步版的 fs.open() 。 语法:fs.openSync(path, flags, [mode])由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) ) 接收参数: path
2022-06-04

编程热搜

目录