vue3 使用 codemirror 实现yaml文件的在线编辑

news2024/12/26 10:49:52

vue3 使用 codemirror 实现yaml文件的在线编辑

  • 1. 使用情形
  • 2. 插件下载
  • 3. 封装yaml编辑器组件
  • 4. 父组件使用
  • 5. js-yaml 使用
  • 6. 备注

1. 使用情形

需要对yaml文件进行在线编辑,并且进行基础格式验证
在这里插入图片描述

2. 插件下载

vue-codemirror 在线代码编辑器插件
js-yaml 用于转换json和yaml格式
@codemirror/lang-yaml 用于在编辑器中进行yaml格式验证

npm install js-yaml vue-codemirror @codemirror/lang-yaml codemirror

3. 封装yaml编辑器组件

<template>
  <codemirror
    v-model="code"
    ref="mycodemirror"
    :autofocus="true"
    :extensions="extensions"
    :indent-with-tab="true"
    @change="handleChange"
    :tab-size="2"
  />
</template>
<script lang="ts" name="CodemirrorYaml" setup>
import { Codemirror } from 'vue-codemirror'
import { yaml } from '@codemirror/lang-yaml'
import { ref } from 'vue'

const emit = defineEmits(['update:modelValue', 'update:textVal'])
const code = ref('')
const extensions = [yaml()]
const handleChange = (e: string) => {
  code.value = e
  emit('update:modelValue', code.value)
}
</script>
<style></style>

4. 父组件使用

<CodemirrorYaml v-model="updateForm.valuesSource" />

5. js-yaml 使用

import * as yaml from 'js-yaml'
// load 实现将yaml格式string转成json
const valuesSource = yaml.load('apiGateway: 172.15.15.15\napiGatewayPort: 30084\nchart: test-rt')
// dump实现将json转成yaml格式string, {apiGateway: '172.15.15.15', apiGatewayPort: 30084, chart: 'test-rt'}
const yamlString = yaml.dump(valuesSource)

6. 备注

因为@codemirror/lang-yaml需要从github拉取,在服务器拉取npm包的时候可能会出行超时问题,可以本地下载后放到项目中

在这里插入图片描述

import { yaml } from '@/components/CodeMirror/lang-yaml'

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

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

相关文章

RickdiculouslyEasy-CTF-综合靶场

步骤一&#xff1a;利用Goby搜索靶机地址 步骤二&#xff1a;访问靶机地址 步骤二&#xff1a;扫描端口 nmap 172.16.1.7 -p 1-65535 步骤三&#xff1a; 扫描目录 dirsearch -u http://172.16.1.7/ 第一个flag&#xff1a;命令&#xff1a;nmap -A -v -T4 172.16.1.7 -p 1-6…

MUR2060CTR-ASEMI快恢复二极管对管MUR2060CTR

编辑&#xff1a;ll MUR2060CTR-ASEMI快恢复二极管对管MUR2060CTR 型号&#xff1a;MUR2060CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220AB 安装方式&#xff1a;插件 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环…

Origin2024中绘制多因子分组柱状图,直观展示不同组别内的数据变化!

当我们需要对比多组平行数据时&#xff0c;采用Origin多因子分组柱状图&#xff0c;不仅可以直接的对比多组数据&#xff0c;同时还能够直观展示各个指标因子的数据变化及趋势 操作步骤&#xff1a; 1、先打开Origin2024软件&#xff0c;然后在Book1中输入如下示例数据&#…

边缘检测运用

文章目录 一、简介1.边缘检测的概念2.边缘检测的目的 二、代码实现三、边缘检测的方法1.1Canny边缘检测器1.2.Canny代码实现2.1Sobel边缘检测器2.2Sobel代码实现3.1Laplacian边缘检测器3.2Laplacian代码实现4.1Scharr边缘检测器4.2Scharr代码实现 四、边缘检测的应用 一、简介 …

Qt与MQTT交互通信

MQTT全称是&#xff08;Message Queuing Telemetry Transport&#xff09;&#xff0c;即消息队列遥测传输协议 是一种基于发布/订阅&#xff08;Publish/Subscribe&#xff09;模式的轻量级通讯协议&#xff0c;并且该协议构建于TCP/IP协议之上&#xff0c;常用于互联网中&am…

vue3封装数字上下滚动翻牌器,

优点&#xff1a;可以传入字符串设置初始数字位数&#xff0c;也可以直接传入数字&#xff0c;让他自己根据位数渲染 组件代码&#xff1a; <template><div class"count-flop" :key"compKey"><!-- --><div:class"item ! . ?…

【EI会议征稿通知】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)

第四届材料工程与应用力学国际学术会议&#xff08;ICMEAAE 2025&#xff09; 2025 4th International Conference on Materials Engineering and Applied Mechanics 本次会议将重点讨论材料科学、应用力学等领域的最新研究进展与发展趋势。会议旨在为国内外从事这些领域研究…

怎么利用接口发送图文彩信

在数字化时代&#xff0c;信息的传递方式日新月异&#xff0c;从传统的书信、电话到如今的即时通讯软件、社交媒体&#xff0c;每一种新技术的应用都在不断重塑我们的沟通方式。而在这其中&#xff0c;彩信&#xff08;Multimedia Messaging Service, MMS&#xff09;作为一种融…

python安装tensorflow一直报错

python安装tensorflow一直报错&#xff0c;试了3.5、3.6、3.7、3.8、3.9、3.10&#xff0c;人麻&#xff0c;全部都不行 问题描述 pip install tensorflow报错ERROR: Could not find a version that satisfies the requirement tensorflow (f问题分析 直到在网上看到&#x…

体系结构论文导读(四十五):Design and Dynamic Update of Real-Time Systems 19‘RTSS

挑战部分 背景问题&#xff1a; 现代工业系统和产品&#xff08;如汽车、智能手机、医疗设备&#xff09;越来越依赖于软件&#xff0c;尤其是嵌入式实时系统。这些系统的可靠性对于社会至关重要&#xff0c;比如特斯拉自动驾驶系统的软件问题曾引发一些事故。目前&#xff0c;…

二维码生成

1、引入二维码生成库 使用一个支持二维码生成的库&#xff0c;如ZXing&#xff08;Zebra Crossing&#xff09;&#xff0c;它提供了二维码生成的工具和API。 pom.xml文件导入ZXing依赖。 <!-- ZXing 库依赖 --><dependency><groupId>com.google.zxing<…

OpenSNN推文:《从沙粒到超级大脑:一步步揭开芯片的秘密》

你有没有想过&#xff0c;手机、电脑、电视等设备里的“智能大脑”是怎么来的&#xff1f;这个大脑就是芯片&#xff0c;它让这些设备变得聪明&#xff0c;能够快速处理各种信息。今天&#xff0c;我将详细地解释芯片的诞生过程&#xff0c;从最基础的原材料一直到它成为我们日…

【HCIA-Datacom】数据通信网络基础

数据通信网络基础 1. 通信与网络网络通信的基本概念数据通信网络定义网络设备 2. 网络类型与网络拓扑网络类型网络拓扑网络拓扑形态 3.网络工程与网络工程师的定义测一测 1. 通信与网络 这里只用作简单的了解即可&#xff0c;在后续中 网络通信的基本概念 ⭐通信&#xff1…

总结——薄基础_Android开发_简易计算器__非教程

关于初学Android开发一段时间的总结&#xff0c;并非教程。主要是为自己防呆&#xff0c;避免以后学习新知识时走一遍老路。再次强调并非教程&#xff0c;如有不妥之处还望见谅 零基础学习比较庞大的内容是十分吃力不讨好的&#xff0c;建议此前至少学习相关编程知识。此谓“薄…

从0到1教你搭建Android自动化Python+appium环境

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、需要软件 1. JDK:JAVA安装后配置JDK环境 2. SDK:SDK下载后配置adb环境 3. Python:pyhton语言 4. Pycharm:python脚本编译工具 5. Appium-python-clie…

CCF推荐B类会议和期刊总结:(计算机网络领域)

CCF推荐B类会议和期刊总结&#xff08;计算机网络领域&#xff09; 在计算机网络领域&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的B类会议和期刊代表了该领域的较高水平。以下是对所有B类会议和期刊的总结&#xff0c;包括全称、出版社、dblp文献网址以及所属…

QML与widget

杂谈 QML-各类建材&#xff08;水泥、沙石、钢筋等各种材料&#xff09;&#xff0c;可以做出各种炫酷建筑wiget-板房&#xff0c;可靠、功能性强。 QML&#xff08;Qt Meta Language or Qt Modeling Language&#xff09;&#xff1a; QML 是一种基于 JavaScript 的声明式语…

‌汽车一键式启动系统‌包含哪些功能

‌汽车一键式启动系统‌是一种智能化的汽车启动系统&#xff0c;它通过一个按钮来启动和熄灭发动机&#xff0c;取代了传统的钥匙启动方式。这个系统不仅简化了启动和熄火的步骤&#xff0c;还提供了多种智能化的功能&#xff0c;如自动开锁、自动关锁、自动关窗、自动防盗等。…

HarmonyOS开发之(下拉刷新,上拉加载)控件pulltorefresh组件的使用

效果图&#xff1a; 一&#xff1a;下载安装&#xff08;地址&#xff1a;OpenHarmony-SIG/PullToRefresh&#xff09; ohpm install ohos/pulltorefresh 二&#xff1a;使用lazyForEarch的数据作为数据源 export class BasicDataSource implements IDataSource{private l…

一种简易CAN数据分析器的实现(一)【工程创建+CAN波特率计算工具】

程序实现详见《一种简易CAN数据分析器的实现&#xff08;二&#xff09;【程序实现】》 微信公众号关注&#xff1a;掌芯元器&#xff0c;免费为大家提供嵌入式相关的技术咨询&#xff01;&#xff01;&#xff01; 目录 一、功能需求及实现 1、功能设计及实现 2、软硬件需求…