monaco-editor基本使用

embedded/2024/9/25 19:03:29/

前言

公司项目需要代码编辑器,多方参考之后用了monaco-editor

一、monaco-editor是什么?

Monaco Editor 是微软开源的基于 VS Code 的代码编辑器,运行在浏览器环境中。

二、使用步骤

1.npm下载插件

//我下载的版本
npm i monaco-editor@0.28.1
npm i monaco-editor-webpack-plugin@4.2.0

2. vue.config.js配置

const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
module.exports = {chainWebpack: (config) => {config.plugin('monaco').use(new MonacoWebpackPlugin({languages: ['javascript', 'css', 'html', 'typescript', 'json','sql','java']}))}
}

3.封装为vue组件 

<template><div class="myEditor"><div ref="monacocontainer" class="container" :id="id"></div></div>
</template>
<script>
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'
import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'
export default {props: {codes: {type: [String,Object],default: function () {return ''}},
//可填的几种语言需要在vue.config.js先配置language: {type: String,default: function () {return 'javascript'}},editorOptions: {type: Object,default: function () {return {foldingStrategy: 'indentation', // 代码可分小段折叠selectOnLineNumbers: true,roundedSelection: false,readOnly: false,        // 只读cursorStyle: 'line',        // 光标样式automaticLayout: false, // 自动布局glyphMargin: true,  // 字形边缘useTabStops: false,fontSize: 28,       // 字体大小tabSize: 2, // tab 缩进长度autoIndent: true, // 自动布局minimap: {enabled: false, // 不要小地图},}}},theme: {type: String,default: function () {return 'vs'}},id: {type: Number,default: function () {return 0}}},data() {return {// theme: 'vs',codesCopy: null // 内容备份}},mounted() {this.initEditor()},methods: {initEditor() {let editorOptions=this.editorOptionslet base= {value: this.codesCopy || this.codes,language: this.language,theme: this.theme,}Object.assign(editorOptions, base)this.monacoEditor = monaco.editor.create(document.getElementById(this.id),editorOptions)this.$emit('mounted', this.monacoEditor)this.monacoEditor.onDidChangeModelContent((event) => {this.codesCopy = this.monacoEditor.getValue()this.$emit('codeChange', this.monacoEditor.getValue(), event)})}}
}
</script>
<style scoped>
.container {min-height: 330px;text-align: left;
}
</style>

4.页面引入 

<template><MonacoEditor:codes="code":editorOptions="Options"theme="vs"language="json":key="randomkey"@mounted="onMounted":id="randomkey"></MonacoEditor>
</template>
//地址是封装为vue组件的页面地址
import MonacoEditor from "@/components/right/components/monacoEditor.vue";
export default {components: {MonacoEditor,},
data() {return {code:null,randomkey: 0,editor: null,Options: {selectOnLineNumbers: true,roundedSelection: false,readOnly: false,automaticLayout: true,glyphMargin: true,showFoldingControls: "always",formatOnPaste: true,formatOnType: true,folding: true,},}
},
methods: {
onMounted(val) {this.editor = val;},
}
}//每次数据更新前,先将randomkey设置为随机数
this.randomkey = Math.floor(Math.random() * (10, 1000000012313));
//给代码编辑赋值,data为数据,如果需要是字符串则需要JSON.parse;若要设置为空则改为{}
this.code = JSON.stringify(data, null, "\t");

 


总结

以上就是今天要讲的内容,本文仅仅只是介绍了需求中monaco-editor的使用,而monaco-editor还有其它更加高效的功能,有需要的可以去官网看看。


http://www.ppmy.cn/embedded/116776.html

相关文章

清理C盘缓存,电脑缓存清理怎么一键删除,操作简单的教程

清理C盘缓存是维护电脑性能、释放磁盘空间的重要步骤。以下是一个详细且操作简单的教程&#xff0c;旨在帮助用户通过一键或几步操作完成C盘缓存的清理。 1.使用Windows系统自带工具 磁盘清理 1.打开磁盘清理工具&#xff1a; -按下“WinE”打开文件资源管理器…

【JavaEE】数据链路层协议和DNS

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f45c;一.以太网 以太网&#xff08;Ethernet&#xff09;是一种局域网技术&#xff0c;它定义了开放系统互连&#xff08;OSI&#xff09;模型中的物理…

从零开始学习Python

目录 从零开始学习Python 引言 环境搭建 安装Python解释器 选择IDE 基础语法 注释 变量和数据类型 变量命名规则 数据类型 运算符 算术运算符 比较运算符 逻辑运算符 输入和输出 控制流 条件语句 循环语句 for循环 while循环 循环控制语句 函数和模块 定…

智谱清影 - CogVideoX-2b-部署与使用

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 体验地址&#xff1a;[丹摩DAMODEL官网](https://www.damodel.com/console/overview) CogVideoX 简介本篇将详细介绍使用丹摩服务器部…

通过 OBD Demo 体验 OceanBase 4.3 社区版

本文作者&#xff1a;马顺华 引言 OceanBase 4.3 是一个专为实时分析 AP 业务设计的重大更新版本。它基于LSM-Tree架构&#xff0c;引入了列存引擎&#xff0c;实现了行存与列存数据存储的无缝整合。这一版本不仅显著提升了AP场景的查询性能&#xff0c;同时也确保了TP业务场景…

Python基础 | 在虚拟环境中安装并在指定文件夹中打开Jupyter notebook

在虚拟环境中安装并在指定文件夹中打开Jupyter notebook 前言一、在虚拟环境下安装Jupyter notebook二、在指定路径下打开Jupyter notebook 前言 Jupyter Notebook 是一个基于 Web 的交互式计算环境&#xff0c;主要功能是将代码、文本、数学方程式、可视化和其他相关元素组合…

前端和后端的相对路径和绝对路径

1. 相对路径访问图片 test.html 位于 web/a/b/c/ 目录中&#xff1a; 若要访问 static/img/ 文件夹中的图片&#xff08;假设图片名为 image.png&#xff09;&#xff0c;相对路径应该是&#xff1a; <img src"../../../static/img/image.png" alt"Image&quo…

HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践

鸿蒙HarmonyOS开发实战往期文章必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&am…