若依平台/vue2引入代码编辑器(monaco-editor)

news2024/9/22 3:48:36

需求背景:需要在线编辑javascript代码,方便维护,有些更新不需要再重新部署

一、安装依赖

"monaco-editor": "^0.30.1",

"monaco-editor-webpack-plugin": "^6.0.0",

二、 vue.config.js中添加如下配置

// editor配置

const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')

configureWebpack: {

        plugins: [

            // editor配置

            new MonacoWebpackPlugin({ languages: ['javascript', 'typescript', 'html', 'css', 'json'] })

        ],

    },

 

 三、为方便实用,将代码编辑器封装成组件Monacoeditor.vue

<template>
  <div
    ref="monaco-editor-btn"
    class="monaco-editor-btn"
    style="width: 100%; height: 100%"
  ></div>
</template>
<script>
import * as monaco from "monaco-editor";
export default {
  name: "AcMonaco",
  props: {
    opts: {
      type: Object,
      default() {
        return {};
      },
    },
    height: {
      type: Number,
      default: 300,
    },
  },
  data() {
    return {
      // 主要配置
      defaultOpts: {
        value: "", // 编辑器的值
        theme: "vs-dark", // 编辑器主题:vs, hc-black, or vs-dark,更多选择详见官网
        roundedSelection: true, // 右侧不显示编辑器预览框
        autoIndent: true, // 自动缩进
        automaticLayout: true, // 自动布局
        minimap: {
          // 关闭代码缩略图
          enabled: false, // 是否启用预览图
        },
      },
      // 编辑器对象
      monacoEditor: {},
    };
  },
  watch: {
    opts: {
      handler(newVal, oldVal) {
        this.monacoEditor.setValue(newVal.value);
      },
      deep: true,
    },
  },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      // 初始化container的内容,销毁之前生成的编辑器
      this.$refs["monaco-editor-btn"].innerHTML = "";
      // 生成编辑器配置
      let editorOptions = Object.assign(this.defaultOpts, this.opts);
      // 生成编辑器对象
      this.monacoEditor = monaco.editor.create(
        this.$refs["monaco-editor-btn"],
        editorOptions
      );
      // 编辑器内容发生改变时触发
      this.monacoEditor.onDidChangeModelContent(() => {
        this.$emit("change", this.monacoEditor.getValue());
      });
    },
    // 供父组件调用手动获取值
    getVal() {
      return this.monacoEditor.getValue();
    },
  },
};
</script>
  
  

四、调用组件

 <div class="button-right-content">

          <Editor ref="monacoRef" :opts="opts" @change="changeValue"></Editor>

 </div>

import Editor from "./components/Monacoeditor.vue"; // 引入组件,并且注册组件

......

data(){

return{

  // 代码编辑器的配置项

    opts: {

        value: "",

        readOnly: false, // 是否只读

        language: "javascript", // 语言类型

        theme: "vs-dark", // 编辑器主题

      },

  }

}

components: { Editor},

//  初始化代码编辑器的内容

//  其中${name}是动态传过来的方法名称,all是传过来的所有参数,\n是用来换行

this.opts.value = `function ${name}(all){\n    let { _this } = all;\n}`;

// 获取代码编辑器的值

this.$refs["monacoRef"].getVal();

以下为官网示意图:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

How to check the validity of the OpenAI key from python?

题意&#xff1a;如何在 Python 中检查 OpenAI 密钥的有效性&#xff1f; 问题背景&#xff1a; https://pypi.org/project/openai/ "The library needs to be configured with your accounts secret key which is available on the website. [...] Set it as the OPENAI…

RxJava-操作符-mergeDelayError使用

说明 合并多个源Observable的事件&#xff0c;事件不是按照顺序被发射&#xff08;如需顺序使用concat操作符&#xff09;。Error事件被延迟发射&#xff0c;针对的是源Observable中的Error事件&#xff0c;多个源Observable都有Error时&#xff0c;会合并Error事件。执行结束 …

vba自动发送邮件的基础步骤?有哪些流程?

vba自动发送邮件如何设置&#xff1f;vba自动发送邮件的技巧&#xff1f; 如果你想节省时间&#xff0c;提高工作效率&#xff0c;学会如何使用VBA自动发送邮件是一个非常有用的技能。AokSend将为你介绍VBA自动发送邮件的基础步骤&#xff0c;并通过简单的分段来详细讲解。 v…

《黑神话:悟空》的发布是否能打开元宇宙游戏世界的门

四年漫长等待&#xff0c;8月20日&#xff0c;国产3A游戏巨制《黑神话&#xff1a;悟空》正式上线并彻底引爆全球市场。这背后不仅是中国游戏史的里程碑&#xff0c;也将为元宇宙的未来夯实地基&#xff01; 游戏上线后&#xff0c;热度持续飙升&#xff0c;成为了社交媒体和游…

【数据结构与算法】并行搜索

并行搜索目录 一.并行的基础知识1.进程2.线程 二.正常遍历搜索三.线程并发搜索1.线程身份证和句柄2.创建线程3.搜索结构体4.处理函数实现 四.完整代码 一.并行的基础知识 1.进程 说的简单点,进程就是计算机中的多个程序,就相当于多个软件. 比如我同时打开QQ和WX,那么这个就叫…

基于yolov5 人体行为检测 对 跌倒 站立 蹲下 坐下 跑 五种行为检测目标检测

该项目使用YOLOv5深度学习框架来检测图像或视频中人体的五种基本行为&#xff1a;跌倒、站立、蹲下、坐下和跑步。YOLOv5&#xff08;You Only Look Once v5&#xff09;是一种高效的物体检测模型&#xff0c;能够快速准确地识别出图像中的目标。本项目具有以下特点&#xff1a…

秋招力扣Hot100刷题总结——动态规划

一、01背包 01背包问题中&#xff0c;遍历顺序可以是先物品后背包&#xff0c;也可以是先背包后物品&#xff0c;但是背包要倒序遍历。 1. 等和子集 题目要求&#xff1a;给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使…

【芯智雲城】星宸科技Sigmastar SSD101芯片_高清显示解决方案

一、方案描述&#xff1a; Sigmastar SSD101是高度集成高性能的display controller,支持模拟的NTSC/PAL/SECAM CVBS和S-video信号输入,可自动检测视频信号源和模式&#xff0c;可自如地切换不同的信号源,内置2D梳状滤波器和AGC,支持6-bit/8-bit TTL/TCON显示屏。芯片LQFP 64pi…

基于大型语言模型的应急人机协同救援关键技术

源自&#xff1a;指挥与控制学报 作者&#xff1a;石响 王天乐 夏乾臣 陈善广 注&#xff1a;若出现显示不完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 人工智能、大数据、多模态大模型、计算机视觉、自然语言处理、数字孪生、深度强化学习 课程…

大屏畅玩游戏,小米SU7迎来大升级,可连接蓝牙游戏手柄

嘿&#xff0c;朋友们&#xff01;今天我要和你们分享一个令人兴奋的消息。 小米SU7汽车迎来了一次重大升级&#xff0c;这不仅仅是技术上的飞跃&#xff0c;更是为驾驶体验带来了革命性的变化。想象一下&#xff0c;在宽敞的车内&#xff0c;通过连接蓝牙游戏手柄&#xff0c…

R语言绘图系列专栏 | 更新中

关于**《R语言绘图专栏》**&#xff0c;此专栏基于R语言绘制图形。每个图形我们会提供对应的R代码、数据和文本文档。此系列将会是一个长期更新的系列。 本系列教程&#xff0c;我们计划发表及收录使用R语言绘制50科研中常用图形。这是个长期的过程&#xff0c;计划花费3-4个的…

graphrag论文

目录 摘要1 介绍2 图 RAG 方法与流程2.1 源文档 → 文本块2.2 文本块 → 元素实例2.3 元素实例 → 元素摘要2.4 元素摘要 → 图社区2.5 图社区 → 社区摘要2.6 社区摘要 → 社区答案 → 全局答案 3 评估3.1 数据集3.2 查询3.3 条件3.4 指标3.5 配置3.6 结果 4 相关工作4.1 RAG …

深度解析DeepMind乒乓球AI:从AlphaGo到AlphaPingPong的进化之路

引言 谷歌DeepMind在AI研究领域再次取得重大突破&#xff0c;最新推出的乒乓球AI机器人已经能够击败人类选手。这一成就标志着AI从单纯的智力游戏&#xff08;如AlphaGo&#xff09;向物理运动竞技场的转移&#xff0c;充分展示了AI在体育竞技中的潜力。这款AI机器人不仅在击败…

【无标题】Image-to-Image Translation 图像风格迁移中的成对图像拼接代码

引 言 在图像风格迁移任务中&#xff0c;近几年比较火热的Generative Adversarial Nets (GAN)模型以及各种变体深受视觉研究团体的青睐&#xff0c;在具体任务中取得比较不错的实验表现。在有监督图像风格迁移任务迁移中&#xff0c;需要输入给模型成对的图片&#xff08;一个来…

中国气膜技术蓬勃发展:专业公司脱颖而出

气膜技术最早起源于美国&#xff0c;凭借其低造价、快速安装、可移动、可重复使用等独特优势&#xff0c;迅速成为体育、仓储、展览、会议、传媒等行业的首选临时或简易室内空间解决方案。21世纪以来&#xff0c;中国逐步引进并发展了膜结构技术&#xff0c;包括骨架膜、张拉膜…

Spire.PDF for .NET【文档操作】演示:创建 PDF 组合

PDF 作品集是一组文件&#xff0c;其中可以包含文本文档、电子表格、电子邮件、图像、PowerPoint 演示文稿和绘图。尽管 PDF 作品集将不同类型的文件组合成一个单元&#xff0c;但其中的每个文件都保留了其原始格式、分辨率和大小。在本文中&#xff0c;您将学习如何使用Spire.…

音频分割软件有什么?最方便的音频分割软件分享给你

一段长音频就像是一本厚重的百科全书&#xff0c;而音频剪辑师的任务&#xff0c;就是要将这本书拆分成数个章节&#xff0c;每章都有其独立的主题和内容&#xff0c;这非常考验剪辑师们的音频分割技巧。 幸运的是&#xff0c;随着技术的发展&#xff0c;市面上出现了许多优秀…

Dell Precision3591 自带RTX2000 Ada + 雷索坞外界3090显卡

问题&#xff1a; 插上雷索坞之后会自动安装驱动&#xff0c;但是自带的驱动可能跟当前的操作系统不兼容&#xff0c;所以安装失败&#xff0c;同时把自带的独立显卡的驱动给搞坏 解决办法&#xff1a; 先把自带的Ada 显卡驱动disable 然后找到跟系统匹配的驱动 GeForce Ga…

考研交流平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家&#xff0c;服务很多代码文档&#xff0c;百分百好评&#xff0c;战绩可查&#xff01;&#xff01;入职于互联网大厂&#xff0c;可以交流&#xff0c;共同进步。有保障的售后 代码参考数据库参…

上交2024最新-《动手学大模型》实战教程及ppt分享!

本课介绍 今天分享一个上海交大的免费的大模型课程&#xff0c;有相关教程文档和Slides&#xff0c;目前是2.2K星标&#xff0c;还是挺火的&#xff01; 《动手学大模型》系列编程实践教程&#xff0c;由上海交通大学2024年春季《人工智能安全技术》课程&#xff08;NIS3353&…