Vite 构建的 Vue3 项目如何整合 Monaco Editor 代码编辑器

本文主要是介绍Vite 构建的 Vue3 项目如何整合 Monaco Editor 代码编辑器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 🦁 一. 前言
  • 🦁 二. 探索过程
    • 2.1 安装
    • 2.2 配置 Monaco Editor
    • 2.3 编写 Monaco Editor 代码编辑器
      • 2.3.1 创建 Coding Editor 组件
      • 2.3.2 父组件使用 CodingEditor 组件
    • 2.4 效果展示
  • 三. 总结

🦁 一. 前言

各位好!我是🦁,好久不写,可还安好?
前面在写一个项目的时候需要使用到在线代码编辑器,选用了微软研发的 Monaco Editor,但是由于官网教程有点难看懂,所以整合的时候遇到了不少麻烦!现在总结一下!

🦁 二. 探索过程

2.1 安装

首先,在 Vite 项目中通过命令行安装 Monaco Editor,命令如下:

 npm install monaco-editor

2.2 配置 Monaco Editor

通过命令配置 Monaco Editor,指定它的加载路径和其他配置项,咱们依据官网教程,通过安装 vite-plugin-monaco 插件来完成这一过程。

npm install vite-plugin-monaco

然后在配置文件使用该插件:

import ViteMonacoPlugin from 'vite-plugin-monaco-editor'export default defineConfig({plugins: [vue(),ViteMonacoPlugin({}),],
});

这个插件将配置 Monaco Editor 的加载路径,并将相关文件添加到你的项目中。

2.3 编写 Monaco Editor 代码编辑器

为了方便编辑器更方便使用,选择将其封装成一个组件,复用简单,并且代码更易于维护。

2.3.1 创建 Coding Editor 组件

在这里插入图片描述

<template><div ref="editorContainer" style="height: 400px;"></div>
</template><script setup>
import * as monaco from 'monaco-editor';	// 全部导入
import { ref, onMounted } from 'vue';export default {props: {value: String,language: String,},setup(props) {const editor = ref(null);onMounted(() => {editor.value = monaco.editor.create(document.getElementById('editorContainer'), {value: props.value || '',language: props.language || 'java',minimap: {				enabled: true,},colorDecorators: true,		//颜色装饰器readOnly: false,			//是否开启已读功能theme: "vs-dark",			//主题});// 监听编辑器内容变化editor.value.onDidChangeModelContent(() => {// 触发父组件的 change 事件,通知编辑器内容变化props.onChange(editor.value.getValue());});});return {editor,};},
};
</script>

MonacoEditor 组件接收 value 和 language 作为 props,并通过 @change 事件通知父组件编辑器内容的变化。

2.3.2 父组件使用 CodingEditor 组件

<template><div><CodingEditor :value="code" :language="language" @change="handleEditorChange" /></div>
</template><script setup>
import CodingEditor from '@/component/CodingEditor/index.vue'
import { ref } from 'vue';export default {components: {CodingEditor,},setup() {const code = ref('console.log("Hello, Monaco Editor!");');const language = ref('javascript');// 处理编辑器内容变化的方法const handleEditorChange = (value) => {console.log('Editor content changed in parent component:', value);};return {code,language,handleEditorChange,};},
};
</script>

handleEditorChange 方法会在 CodingEditor 组件的内容发生变化时被调用。这是通过在父组件中使用 @change 事件监听来实现的。

确保在 MonacoEditor.vue 组件中正确触发 props.onChange 事件,然后在父组件中使用 @change 事件即可监听 Monaco Editor 的内容变化。

2.4 效果展示

在这里插入图片描述

三. 总结

一个 Demo 总结,希望能帮助到您!具体源码获取,可见我的:Gitee。
咱们下期再会!

这篇关于Vite 构建的 Vue3 项目如何整合 Monaco Editor 代码编辑器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761053

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定