当前位置: 首页 > article >正文

vue3使用monaco编辑器(VSCode网页版)

vue3使用monaco编辑器(VSCode网页版)

    • 文章说明
    • 参考文章
    • 核心代码
    • 效果展示
    • 实践说明
    • 源码下载

文章说明

一直在找网页版的编辑器,网页版的VSCode功能很强大,这个monaco就是VSCode样式的编辑器,功能很强大,可以直接使用;它的版本有变更,导致可能vue3使用会报一些小错误,我这里书写一个示例,来简单使用该组件,主要解决 babel.cosfig.js 和 vue.config.js 内缺少配置导致的报错

参考文章

Vue3 集成Monaco Editor编辑器
使用的demo代码是从这里复制过来的,不同的是,这里稍微补充了一下vue3相关的配置,不然会运行报错

Vue3中使用Monaco Editor代码编辑器
这篇文章中提到了 vue.config.js 的配置

vue报错之“ Static class blocks are not enabled. Please add `@babel/plugin-transform-class-static-block”
最后一个 babel.config.js 中需要添加的配置,在这篇文章中找到了

核心代码

依赖安装

  "dependencies": {
    "core-js": "^3.8.3",
    "monaco-editor": "^0.52.0",
    "monaco-editor-webpack-plugin": "^7.1.0",
    "vue": "^3.2.13"
  },

vue.config.js

const {defineConfig} = require('@vue/cli-service')
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')

module.exports = defineConfig({
    transpileDependencies: true,
    lintOnSave: false,
    publicPath: './',
    configureWebpack: {
        plugins: [
            new MonacoWebpackPlugin()
        ]
    }
})

babel.config.js

module.exports = {
    presets: [
        '@vue/cli-plugin-babel/preset'
    ],
    plugins: ["@babel/plugin-transform-private-methods", "@babel/plugin-transform-class-static-block"],
}

组件源码

<script setup>
import * as monaco from 'monaco-editor';
import {onMounted, onUnmounted, ref} from 'vue'

const editorContainer = ref();
const editor = ref();

onMounted(() => {
  if (editorContainer.value) {
    editor.value = monaco.editor.create(editorContainer.value, {
      value: "",
      language: 'javascript',
      theme: 'vs-dark',
      codeLens: true,
      folding: true,
      snippetSuggestions: 'inline',
      tabCompletion: 'on',
      foldingStrategy: 'auto',
      smoothScrolling: true,
    });

    editor.value.onDidChangeModelContent(() => {
      console.log('编辑器内容变更')
    })
  }
});

onUnmounted(() => {
  if (editor.value) {
    editor.value.dispose();
  }
});
</script>

<template>
  <div ref="editorContainer" class="container"></div>
</template>

<style scoped>
.container {
  width: 100%;
  height: 100%;
}
</style>

App.vue

<script setup>
import Editor from "@/Editor.vue";
</script>

<template>
  <div style="width: 100vw; height: 100vh">
    <Editor/>
  </div>
</template>

<style>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
</style>

效果展示

编辑JavaScript代码
在这里插入图片描述

实践说明

在运行过程中会提示这个文件大小超过500KB,不过不影响运行
在这里插入图片描述

源码下载

monaco使用demo


http://www.kler.cn/a/417146.html

相关文章:

  • 搜索二维矩阵 II(java)
  • uniapp运行时,同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示。
  • 004 MATLAB数值微积分
  • DM达梦管理工具拖出空白区块,无法关闭
  • 浅谈telnet和ping
  • Springboot项目集成Mybatis-Plus,多数据源配置,写主读从
  • 计算机网络性能
  • vim编辑器的一些配置和快捷键
  • 操作无法完成,因为其中的文件夹或文件已在另一程序中打开 请关闭该文件夹或文件,然后重试。>>怎么删除被打开的文件
  • 算法技巧及模板总结
  • 第四十二篇 EfficientNet:重新思考卷积神经网络的模型缩放
  • Web开发基础学习——通过React示例学习模态对话框
  • 力扣第 77 题 组合
  • Python中的六种“国际数字格式”实施方式
  • 解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题
  • 存储服务器一般做是做什么阵列?详细列举一下
  • Spring boot之BeanDefinition介绍
  • 在Java中使用Apache POI导入导出Excel(一)
  • TensorBoard中的add_image()和add_scalar()
  • Pandas 操作Excel
  • duxapp 2024-11-29 更新 新增 UI 组件功能
  • iQOO Neo10系列携三大蓝科技亮相,性能与续航全面升级
  • 知行合一:实践中的技术分享与学习
  • PostgreSQL WAL日志膨胀处理
  • 排序算法思维导图
  • Ubuntu源码安装gitlab13.7集群多前端《二》