monaco-editor组件封装,直接拿去用

1、项目需要使用monaco-editor,手动封装了一下

<template>
  <div ref="monacoEditorRef" :style="style"></div>
</template>

<script>
import * as monaco from 'monaco-editor';
import { debounce } from 'lodash';

export default {
  name: 'Monaco',
  props: {
    width: { type: [String, Number], default: '100%' },
    height: { type: [String, Number], default: '100%' },
    code: { type: String, default: '// code \n' },
    language: { type: String, default: 'javascript' },
    theme: { type: String, default: 'vs-dark' }, // vs, hc-black
    options: { type: Object, default: () => ({}) },
    highlighted: {
      type: Array,
      default: () => [
        {
          number: 0,
          class: ''
        }
      ]
    },
    changeThrottle: { type: Number, default: 0 },
    viewMode: { type: Boolean, default: false }
  },
  data() {
    return
Vue 3 中封装 Monaco Editor 可以让你在项目中更方便地使用这个强大的代码编辑器。Monaco Editor 是由微软开发的一个轻量级、可定制的代码编辑组件,适用于多种编程语言和文件类型。 以下是一个基本的 Vue 3 中封装 Monaco Editor 的步骤: 1. 安装依赖: ```sh npm install monaco-editor @vueuse/core ``` 或使用 Yarn: ```sh yarn add monaco-editor @vueuse/core ``` 2. 导入并创建组件: ```vue <template> <div ref="monacoEditor"> <textarea v-model="code" @input="updateEditor"></textarea> </div> </template> <script> import { useMountedEffect } from '@vueuse/core' import * as Monaco from 'monaco-editor' export default { setup() { const code = ref('') const editor = ref(null) // 初始化 Monaco Editor useMountedEffect(() => { const initEditor = async () => { if (!editor.value) return const monacoEditor = await MonacoWebpackPlugin.MonacoEnvironment.createMonacoEditor(editor.value, { value: code.value, language: 'javascript', // 根据需要设置语言 theme: 'vs-dark', // 设置主题 }) monacoEditor.onDidChangeModelContent(() => { code.value = monacoEditor.getValue() }) } initEditor() }, [code]) // 更新编辑器方法 const updateEditor = (e) => { editor.value.editor.setValue(e.target.value) } return { code, editor } }, } </script> ``` 3. 如果你在使用 Webpack,还需要配置 MonacoWebpackPlugin: ```js // webpack.config.js 或 vue.config.js const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin') module.exports = { // ... plugins: [ new MonacoWebpackPlugin({ path: require.resolve('monaco-editor'), // monaco-editor 的路径 loader: 'ts-loader', // 如果使用 TypeScript 编译 languages: ['javascript', 'typescript'], // 支持的语言列表 }), ], // ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eadela

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值