OJ在线评测系统 前端开发整合开源组件 Monaco Editor 并且开发创建题目页面

前端开发整合Monaco Editor

微软官方的

npm install monaco-editor

下载兼容版本

npm install monaco-editor@latest

 代码编辑器

先把编辑器本身安装好monaco-editor

安装插件

npm install monaco-editor-webpack-plugin

这个插件的作用是把我们的代码编译器和webpack打包在一起

便于我们去加载

查看一下官方文档

vue项目整合monaco-editor

webpack项目

现在vue.config.js中配置webpack插件

const { defineConfig } = require("@vue/cli-service");
const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin");module.exports = defineConfig({transpileDependencies: true,chainWebpack(config) {config.plugin("monaco").use(new MonacoWebpackPlugin());},
});

如何使用呢

查看示例教程

我们跟刚才的文本编译器一样

写一个组件

<template><divid="code-editor"ref="codeEditorRef"style="min-height: 400px; height: 60vh"/><!--  <a-button @click="fillValue">填充值</a-button>-->
</template><script setup lang="ts">
import * as monaco from "monaco-editor";
import { onMounted, ref, toRaw, withDefaults, defineProps, watch } from "vue";/*** 定义组件属性类型*/
interface Props {value: string;language?: string;handleChange: (v: string) => void;
}/*** 给组件指定初始值*/
const props = withDefaults(defineProps<Props>(), {value: () => "",language: () => "java",handleChange: (v: string) => {console.log(v);},
});const codeEditorRef = ref();
const codeEditor = ref();// const fillValue = () => {
//   if (!codeEditor.value) {
//     return;
//   }
//   // 改变值
//   toRaw(codeEditor.value).setValue("新的值");
// };watch(() => props.language,() => {if (codeEditor.value) {monaco.editor.setModelLanguage(toRaw(codeEditor.value).getModel(),props.language);}}
);onMounted(() => {if (!codeEditorRef.value) {return;}// Hover on each property to see its docs!codeEditor.value = monaco.editor.create(codeEditorRef.value, {value: props.value,language: props.language,automaticLayout: true,colorDecorators: true,minimap: {enabled: true,},readOnly: false,theme: "vs-dark",// lineNumbers: "off",// roundedSelection: false,// scrollBeyondLastLine: false,});// 编辑 监听内容变化codeEditor.value.onDidChangeModelContent(() => {props.handleChange(toRaw(codeEditor.value).getValue());});
});
</script><style scoped></style>

在我们的主页中去引入

<template><div class="home"><MdEditor :value="value" :handle-change="onChange" /><img alt="Vue logo" src="../assets/logo.png" /><CodeEditor /></div>
</template><script setup lang="ts">
import { defineComponent, ref } from "vue";
import MdEditor from "@/components/MdEditor.vue";
import CodeEditor from "@/components/CodeEditor.vue";const value = ref();
const onChange = (v: string) => {value.value = v;
};
</script>

和md编辑器一样

也要接受父组件的传值

把显示的输入

实时得到的结果交给父组件去控制

实时得到代码

开发创建题目页面

我们用插件自动根据后端生成代码

我们还是使用openAPI

终端指令

openapi --input http://localhost:8121/api/v2/api-docs --output ./generated --client axios

接下来我们开发页面

{"answer": "","content": "","judgeCase": [{"input": "","output": ""}],"judgeConfig": [{"memoryLimit": 0,"stackLimit": 0,"timeLimit": 0}],"tags": [],"title": ""
}

vue文件

<template><div id="文件名的小写"></div>
</template><script setup lang="ts"></script><style scoped></style>

在JetBrains系列编辑器中打开设置

搜索live Tempaltes

先创建一个自定义模版组

在组下创建代码模版

输入缩写 即可生成模版代码

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

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

相关文章

Amazon EC2, S3 Bucket, Yaml file, Stack

Amazon EC2, S3 Bucket, Yaml file, Stack YAML 文件&#xff1a; YAML是一种人类可读的数据序列化格式&#xff0c;常用于配置文件。它比JSON或XML更简洁&#xff0c;常用于定义复杂的数据结构。 YAML文件是一种格式&#xff0c;用于编写配置数据。它易于阅读&#xff0c;常…

联想天逸100使用笔记

文章目录 配置整理过程锁定功能键怎么弄? 翻出好多年不用的老电脑&#xff0c;饱受折磨&#xff0c;做个笔记。 之前不是我在使用&#xff0c;本身配置就不高&#xff0c;还被装了各种流氓软件&#xff0c;卡的几乎动不了。 配置 老电脑配置不行&#xff1a; i3 5005U 4G内存…

大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓

文章目录 基于FlinkHologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓​编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业OD…

【算法】链表:21.合并两个有序链表(easy)

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法&#xff08;双指针&#xff09; 4、代码 1、题目链接 21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 3、解法&#xff08;双指针&#xff09; 推荐一篇题解…

华为-IPv6与IPv4网络互通的6to4自动隧道配置实验

IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…

匈牙利算法模板

P3386 【模板】二分图最大匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:最模板的一集.还未匹配则匹配&#xff0c;否则之前一个给现在这个让位置. int n,m,e; vector<int> vct[505]; int match[505]; bool vis[505]; bool mark[505][505]; bool dfs(int s)…

[大语言模型-论文精读] 大语言模型是单样本URL分类器和解释器

[大语言模型-论文精读] 大语言模型是单样本URL分类器和解释器 目录 文章目录 [大语言模型-论文精读] 大语言模型是单样本URL分类器和解释器目录1. 论文信息2. 摘要3. 引言4. 相关工作A. 网络钓鱼URL检测B. 使用LLMs进行单样本分类 C. LLMs作为分类器的可解释性 5. 论文所提框架…

十四、磁盘的管理

1.磁盘初始化 Step1:进行低级格式化(物理格式化)&#xff0c;将磁盘的各个磁道划分为扇区。一个扇区通常可分为头、数据区域(如512B大小)、尾 三个部分组成。管理扇区所需要的各种数据结构一般存放在头、尾两个部分&#xff0c;包括扇区校验码(如奇偶校验、CRC循环几余校验码等…

Python-o365:提升办公效率的利器

&#x1f680; 引言 在数字化办公日益普及的今天&#xff0c;Python以其强大的功能和灵活性&#xff0c;在自动化办公和数据处理方面发挥着重要作用。作为最常用的办公工具之一&#xff0c;Microsoft Office套件如何通过编程提升使用效率&#xff0c;一直是开发者们关注的热点…

如何使用ChatGPT API及Bito插件

目录 本章整体说明Open AI常用API接口工具&#xff1a;Postman调用API接口演示Java和Python调用Open AI API接口基于ChatGPT-4的代码生成插件Bito使用小练习&#xff1a;3分钟搭建一个自己专属的AI聊天网站 2-1 本章整体说明 本章将详细介绍如何使用ChatGPT API以及Bito插件&…

LLamaIndex - 构建全栈Web应用程序的指南

本文翻译整理自&#xff1a;A Guide to Building a Full-Stack Web App with LLamaIndex https://docs.llamaindex.ai/en/stable/understanding/putting_it_all_together/apps/fullstack_app_guide/ 文章目录 简介一、Flask 后端基本Flask - 处理用户索引查询Advanced Flask - …

web前端(本地存储问题超过5MB不继续保存解决办法)

及时使用pinia进行持久化存储&#xff0c;存入localstorage仍然会有超过5MB就不再处理保存的问题 解决办法&#xff1a;取消使用pinia-plugin-persistedstate持久化插件&#xff0c;使用localforage&#xff0c;pinia库正常开启persist: true localForage 是一个快速而简单的…

cocos打包后发布web,控制台报错.plist资源下载404

web加载报错 download failed: assets/main/native/0a/0a1a5e41-7d91-4a5d-9552-2c10e5fc5867.plist, status: 404&#xff0c; 应该是MIME属性没有设置允许下载.plist后缀的文件。 对于linux应该改nginx或apache&#xff0c;允许下载该类文件。 我部署在了windows服务器上&am…

【微服务即时通讯系统】——etcd一致性键值存储系统、etcd的介绍、etcd的安装、etcd使用和功能测试

文章目录 etcd1. etcd的介绍1.1 etcd的概念 2. etcd的安装2.1 安装etcd2.2 安装etcd客户端C/C开发库 3. etcd使用3.1 etcd接口介绍 4. etcd使用测试4.1 原生接口使用测试4.2 封装etcd使用测试 etcd 1. etcd的介绍 1.1 etcd的概念 Etcd 是一个基于GO实现的 分布式、高可用、一致…

计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Redis实战--Redis的数据持久化与搭建Redis主从复制模式和搭建Redis的哨兵模式

Redis作为一个高性能的key-value数据库&#xff0c;广泛应用于缓存、消息队列、排行榜等场景。然而&#xff0c;Redis是基于内存的数据库&#xff0c;这意味着一旦服务器宕机&#xff0c;内存中的数据就会丢失。为了解决这个问题&#xff0c;Redis提供了数据持久化的机制&#…

深入解析Excel文件格式:.xls与.xlsx的差异与应用指南

在当今的数据处理和办公自动化领域&#xff0c;Microsoft Excel 无疑是一款极为重要的工具。 它不仅广泛应用于日常的数据录入、计算和图表制作&#xff0c;而且也是数据分析、财务建模等专业 领域不可或缺的软件。Excel 的文件格式经历了多个版本的迭代&#xff0c;其中 .xl…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-2

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

二叉树进阶oj题【二叉树相关10道oj题的解析和c++代码实现】

目录 二叉树进阶oj题1.根据二叉树创建字符串2.二叉树的层序遍历3.二叉树的层序遍历 II4.二叉树的最近公共祖先5.二叉搜索树和双向链表6.从前序与中序遍历序列构造二叉树7.从中序和后序遍历序列来构造二叉树8.二叉树的前序遍历&#xff0c;非递归迭代实现9.二叉树中序遍历 &…

部标主动安全(ADAS+DMS)对接说明

1.前言 上一篇介绍了部标&#xff08;JT/T1078&#xff09;流媒体对接说明&#xff0c;这里说一下如何对接主动安全附件服务器。 流媒体的对接主要牵扯到4个方面&#xff1a; &#xff08;1&#xff09;平台端&#xff1a;业务端系统&#xff0c;包含前端呈现界面。 &#x…