monaco-editor 简单使用

ba9dd20230218174428131.png

一. 文件调用示例

1. 安装package包 官方文档

"monaco-editor": "^0.28.1",
"monaco-editor-webpack-plugin": "^4.2.0",

Copy

请注意安装包的版本号

monaco-editor-webpack-pluginmonaco-editor
7.*.*>= 0.31.0
6.*.*0.30.*
5.*.*0.29.*
4.*.*0.25.*0.26.*0.27.*0.28.*
3.*.*0.22.*0.23.*0.24.*
2.*.*0.21.*
1.9.*0.20.*
1.8.*0.19.*
1.7.*0.18.*

2.配置vue.coinfig.js

在vue.coinfig.js中增加如下配置:

const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');module.exports = {lintOnSave: false,  configureWebpack: {plugins: [// 配置JS在线代码编辑器monaco-editor的辅助文件new MonacoWebpackPlugin(),],},
};

Copy

3. 调用示例

import * as monaco from 'monaco-editor';
export default {data() {return {monacoEditor: null, // 语言编辑器}},mounted(){this.init()},methods: {init(){if(this.$refs.codeContainer){// 初始化编辑器,确保dom已经渲染this.monacoEditor = monaco.editor.create(this.$refs.codeContainer, {value: '', // 编辑器初始显示文字language: 'json', // 语言automaticLayout: true, // 自动布局theme: 'vs', // 官方自带三种主题vs, hc-black, or vs-darkminimap: { // 关闭小地图enabled: false,},lineNumbers: 'off', // 隐藏控制行号});}}}
}.coder-editor{width: 100%;height: 160px;border: 1px solid rgba(0, 0, 0, 0.08);
}

Copy

二. 属性说明

{value: '', // 编辑器初始显示文字language: 'javascript', // 语言javascript | jsonautomaticLayout: true, // 自动布局theme: 'vs', // 官方自带三种主题vs, hc-black, or vs-darkfoldingStrategy: 'indentation', // 代码可分小段折叠overviewRulerBorder: false, // 不要滚动条的边框lineNumbers: 'off', // 控制行号的出现on | offscrollbar: { // 滚动条设置verticalScrollbarSize: 4, // 竖滚动条horizontalScrollbarSize: 6, // 横滚动条},readOnly: false, // 是否只读 Defaults to false | trueminimap: { // 关闭小地图enabled: false,},cursorStyle: 'line', // 光标样式automaticLayout: false, // 自动布局fontSize: 14, // 字体大小tabSize: 2, // tab缩进长度autoIndent: true, // 自动布局
}

Copy

支持的语言类型

在项目的node_modules/monaco-editor/min/vs/basic-languages目录下能看到支持的语言类型:

三. 常用事件

销毁编辑器

this.monacoEditor.dispose();

Copy

实时获取编辑器的值

this.monacoEditor.onDidChangeModelContent(() => {this.monacoEditor.getValue() // 获取编辑器中的语句
})

Copy

设置编辑器的值

this.monacoEditor.setValue(newValue)

Copy

其它事件

editor.setValue('console.log("Hello world!");');    //设置值
editor.getValue();  //获取值editor.getSelection();  //获取选中的行信息editor.getModel().getLineContent(1);    //获取某一行的内容
editor.getModel().getLinesContent();    //获取每一行的内容monaco.editor.setTheme('vs-dark');      //设置主题editor._configuration._rawOptions.language  //获取编辑器当前语言(初始化值)
editor.getModel().getLanguageId()           //动态(已改变编辑器语言)//改变属性
editor.updateOptions({//关闭行号lineNumbers: "off"
});//内容改变事件
editor.onDidChangeModelContent(function(e){console.log(e);console.log(editor.getValue());
});//添加按键监听
editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_S, function () {console.log('Ctrl + S 保存')
})editor.trigger('a', 'editor.action.formatDocument') //触发:格式化文档,更多支持项:editor._actions//渲染代码得到HTML
monaco.editor.colorize('console.log("Hello world!");', 'javascript').then(function (data) {console.log(data);
});//渲染节点代码
console.log("Hello world!");
monaco.editor.colorizeElement(document.getElementById('code'));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190542.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统

一、PXE网络批量装机的介绍 1、常见的三种系统安装方式 2、回顾系统安装的过程,了解系统安装的必要条件 3、什么是pxe 4、搭建pxe的原理 5、Linux的光盘镜像中的isolinux中的相关文件学习 二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解 5个…

Struts2 数据校验之四兄弟

现在是科技的时代,大多数人都在网上购物了, 我们都碰到过相同的问题,各大网站弄的那些各种各样的注册页面,相信大家都深有体会。 有了这验证就很好的保证了我们的信息的准确性和安全性。 接下来我给大家讲解一下用struts2怎么实…

CVE-2021-42287CVE-2021-42278 域内提权

倘见玉皇先跪奏:他生永不落红尘 本文首发于先知社区,原创作者即是本人 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的&#xf…

嵌入式系统中相关的高质量开源项目

关于GitHub,可能很多人误以为这是互联网人的专属,其实并不是,那上面嵌入式相关的开源项目是有很多的。现分享一些高星开源项目(像RT-Thread、AWTK等大家都熟知的就不介绍了):Avem 项目链接: ht…

Visual Components数字化工厂虚拟仿真软件 衡祖仿真

数字孪生、人工智能、工业互联网、边缘计算这些概念在整个产业里非常的火热,但是,如果这些概念没有“模型”作为基础的话,那么这些概念都只能是空中楼阁无法落地。而仿真技术是利用这些模型在计算机中构建一比一的真实场景,使得在…

如何使用Gitlab搭建属于自己的代码管理平台

大家好,我是Mandy。今天分享的主题内容是如何使用GitLab搭建属于自己的代码管理平台。 为什么会单独分享这篇文章呢,相信在很多的开发同学任职的公司中,都用到了gitlab来做代码管理平台,同时结合GitLab的一些自动化功能&#xff…

均匀光源积分球的应用领域有哪些

均匀光源积分球的主要作用是收集光线,并将其用作一个散射光源或用于测量。它可以将光线经过积分球内部的均匀分布后射出,因此积分球也可以当作一个光强衰减器。同时,积分球可以实现均匀的朗伯体漫散射光源输出,整个输出口表面的亮…

机器学习第9天:决策树分类

文章目录 机器学习专栏 介绍 基本思想 使用代码 深度探索 优点 估计概率 训练算法 CART成本函数 实例数与不纯度 正则化 在鸢尾花数据集上训练决策树 机器学习专栏 机器学习_Nowl的博客-CSDN博客 介绍 作用:分类 原理:构建一个二叉树&#…

ubuntu中用docker部署jenkins,并和码云实现自动化部署

1.部署jenkins docker network create jenkins docker run --name jenkins-docker --rm --detach \--privileged --network jenkins --network-alias docker \--env DOCKER_TLS_CERTDIR/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jen…

顺序表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

基于Python实现大型家用电器和电子产品在线商店购买数据分析【500010098】

导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt获取数据 df pd.read_csv( r"./data/kz.csv",sep,)数据描述 该数据包含2020年4月至2020年11月从大型家用电器和电子产品在线商店购买的数据。 数据说明 event_time&#xff1a…

嵌入式中一文搞懂ARM处理器架构

1、嵌入式处理器基础 典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等组成 。 指令执行过程一般分为: 取指: 从存储器中获得下一条执行的指令读入指令寄存器;…