monaco-editor vue2.X组件化

安装

指定版本安装(版本过高容易报错)

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

配置

vue.config.js中配置 monaco-editor-webpack-plugin 

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

创建MonacoEditor公共组件

<template>
  <div ref="editor" 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.editor, {
        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,
        'sql'
      )

      if (oldModel) {
        oldModel.dispose()
      }
      this.editor.setModel(newModel)
    }
  }
}
</script>

<style scoped>
.editor {
  width: 100%;
  min-height: 100%;
}
</style>

父组件使用

<template>
  <div>
    <monaco-editor></monaco-editor>
  </div>
</template>

<script>
import MonacoEditor from '@/components/MonacoEditor'
export default {
  name: 'Father',
  components: {
    MonacoEditor
  }

}
</script>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Monaco Editor是一个基于浏览器的代码编辑器,它提供了丰富的功能和高度可定制的界面。它支持多种语言和语法高亮,并具有代码补全、代码折叠、代码片段、错误提示等功能。在Vue3中使用Monaco Editor可以通过封装成Vue组件来实现。 以下是使用Monaco EditorVue3中的基本步骤: 1. 首先,安装Monaco Editor的依赖包。可以使用npm或者yarn进行安装。在命令行中运行以下命令: ```shell npm install monaco-editor npm install monaco-editor-webpack-plugin ``` 2. 创建一个Vue组件,例如`MonacoEditor.vue`,并在该组件中引入Monaco Editor的相关模块: ```javascript <template> <div ref="editorContainer" style="width: 100%; height: 500px;"></div> </template> <script> import * as monaco from 'monaco-editor'; import MonacoWebpackPlugin from 'monaco-editor-webpack-plugin'; export default { mounted() { // 在组件挂载后初始Monaco Editor this.initMonacoEditor(); }, methods: { initMonacoEditor() { // 创建Monaco Editor实例 const editor = monaco.editor.create(this.$refs.editorContainer, { value: '', language: 'javascript', }); // 可以在这里添加其他自定义配置和事件监听 }, }, }; </script> ``` 3. 在需要使用Monaco Editor的地方引入该组件,并将其添加到Vue实例中: ```javascript <template> <div> <monaco-editor></monaco-editor> </div> </template> <script> import MonacoEditor from './MonacoEditor.vue'; export default { components: { MonacoEditor, }, }; </script> ``` 通过以上步骤,你就可以在Vue3中使用Monaco Editor了。你可以根据自己的需求进行进一步的配置和定制,例如设置编辑器的语言、主题、字体大小等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值