vue3+ts项目引入vue-codemirror实现yaml代码编辑器

news2024/9/23 7:18:25

重要提示

重新安装依赖后一定要重启项目!!!

网上搜到的案例拿过来都报错?那应该是插件的版本不一样,先弄清版本!!!

本示例相关版本如下

npm i vue-codemirror@6  

// 按自己所需的语言装,需要支持js就安装这个
npm i @codemirror/lang-javascript

// yaml语言就装这个,其他语言同理
npm i @codemirror/lang-yaml  

// 其中的一种深色主题
npm i @codemirror/theme-one-dark 

vue-codemirror 说明

这个插件版本差异真的巨大,我在网上窜来窜去好久,搜到的很多例子实现方法各不相同怎么都有报错,后来才弄清楚这版本问题,差太多了。

vue codemirror v5/v6已经发布。这是一个基于以下内容的新版本CodeMirror@6并且仅对Vue3可用。自从CodeMirror@6新版本将不再支持直接浏览器引用UMD模块。简而言之,新版本是与之前的版本完全不兼容。

封装一个yaml代码编辑器的组件

示例效果如图

 子组件代码

<template>
  <Codemirror
    :model-value="modelValue"
    :style="editorConfig.style"
    :extensions="editorConfig.extensions"
    @change="codeChange">
  </Codemirror>
</template>
<script lang="ts" setup>
import { Codemirror } from "vue-codemirror"
// 语言和主题也需要安装对应的依赖
import { javascript } from "@codemirror/lang-javascript"
import { yaml } from '@codemirror/lang-yaml'
import { oneDark } from "@codemirror/theme-one-dark"

defineProps({
  modelValue: {
    type: String,
    default: ''
  }
})

const emit = defineEmits(['update:modelValue'])

// const lang = { javascript, yaml }['yaml']这行代码没有什么深义,只是个新写法,也可以不要
// 然后extensions: [lang(), oneDark]这里 lang()直接写对应的语言yaml()或者javascript()这种就行
const lang = { javascript, yaml }['yaml']
const editorConfig = {
  style: {
    height: '350px',
    fontSize: '18px'
  },
  extensions: [lang(), oneDark]
}

const codeChange = (newVal: any) => {
  emit('update:modelValue', newVal)
}
</script>
<style scoped></style>

父组件代码

<template>
  <div>
    父组件中获取数据:{{ yamlCode }}

    <div class="code-mirror">
      <YamlEditor v-model="yamlCode"></YamlEditor>
    </div>
  </div>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import YamlEditor from '@/components/YamlEditor.vue';

const yamlCode = ref();// 这个变量可以向子组件传默认的数据,也可以实时同步子组件里更新后的数据
</script>
<style scoped>
.code-mirror {
   width: 500px;
}
</style>


总结

1、vue3项目中通过vue-codemirror6.0插件实现yaml代码编辑器,本例只实现了基础的引入和语言主题的设置,还有拼写检查、错误提示、快捷提示等功能有待完善,我也还没研究出来;

2、本例只给出1种主题和2种语言的安装,想要获取很多主题和语言,得自己上网搜下名字叫啥然后去安装:

npm i @codemirror/lang-xxx

npm i @codemirror/theme-xxx

3、vue3中自定义组件封装如何使用v-model实现双向通信,也可以参考本例

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

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

相关文章

QT学习之计算器

网格布局初尝试&#xff0c;快速构建计算器 项目结构&#xff1a; wident.h拖动建立界面&#xff0c;20个button&#xff0c;一个lineedit 布局好后整体网格布局调整&#xff0c;依次给每个案件输入文本&#xff0c;并改objectname方便后期辨识 为了在lineedit显示数字&…

鸿蒙轻内核M核源码分析系列十二 事件Event

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…

电子PCB板老化测试指南

部署到现场的成品 PCBA 应通过多项测试&#xff0c;以确保可靠性和稳定运行。行业标准规定了多种测试方法、性能要求、评估指标&#xff0c;甚至必须使用测试夹具来评估电气行为、耐热循环性、长期热稳定性、承受热冲击的能力等等。 PCB老化测试的目的 PCB 老化测试的目的是收…

【STM32】CAN总线基础入门

CAN总线基础入门 一、CAN简介二、主流通信协议对比三、CAN物理层1、CAN硬件电路2、CAN电平标准3、CAN收发器 – TJA1050&#xff08;高速CAN&#xff09;4、CAN物理层特性 四、帧格式1、CAN总线帧格式2、数据帧&#xff13;、数据帧各部分用途简介&#xff14;、数据帧的发展历…

详解TensorRT的C++高性能部署以及C++部署Yolo实践

详解TensorRT的C高性能部署 一. ONNX1. ONNX的定位2. ONNX模型格式3. ONNX代码使用实例 二、TensorRT1 引言 三、C部署Yolo模型实例 一. ONNX 1. ONNX的定位 ONNX是一种中间文件格式&#xff0c;用于解决部署的硬件与不同的训练框架特定的模型格式的兼容性问题。 ONNX本身其…

未来已来:揭秘GPT-Next如何重塑人工智能的未来

GPT-Next&#xff1a;性能的百倍提升 在当今这个科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最具活力和变革性的领域之一。最近&#xff0c;OpenAI在KDDI峰会上宣布了一项激动人心的消息&#xff1a;他们即将推出名为“GPT-Next”的新一代语言模…

SpringCloud之Sleuth(Micrometer)+ZipKin分布式链路追踪

&#xff08;学习笔记&#xff09; 1、分布式链路追踪概述 问题&#xff1a;在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xf…

电脑桌面一键整理,高效整理,让你的电脑桌面焕然一新!

电脑桌面整理是一个能够提高工作效率、增强安全性、简化资产管理、改善用户体验的电脑软件。无论是图标管理还是文件整理&#xff0c;通过专业的电脑桌面整理软件都能轻松搞定&#xff0c;有序的管理文件、应用程序。 下面是关于Windows桌面工具的介绍与说明&#xff01; 一、…

恒创科技:最小化服务器存储容量的技巧

最小化服务器存储容量的需求通常来自于希望降低硬件成本、节省能源以及提高系统性能的考虑。以下是一些实现这一目标的技巧&#xff1a; 1.评估您的存储需求 在开始优化服务器存储之前&#xff0c;您需要清楚了解实际需要和使用的空间大小。您可以使用磁盘使用情况分析器或 Tre…

day15-Linux的优化_linux15个优化

① UID 当前用户uid信息 [rootoldboy59 ~]# id uid0(root) gid0(root) groups0(root) \\UID 当前用户uid信息※② PATH 存放的是命令的位置/路径 [rootoldboy59 ~]# echo $PATH \\用$符号识别环境变量 /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bi…

自然语言处理系列六十一》分布式深度学习实战》TensorFlow深度学习框架

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十一分布式深度学习实战》TensorFlow深度学习…

JWT生成、解析token

目录 1. 导入JWT相关依赖2. JWT生成token3. JWT解析token4. 测试结果5. JWT加密、解密工具类 1. 导入JWT相关依赖 <!-- jwt认证模块--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><versio…

Linux 一个简单的中断信号实现

1.查看手册&#xff0c;学习中断处理图 流程&#xff1a;&#xff08;次级源->开关&#xff09;到 源挂起 到 开关 到 处理优先级 到 中断挂起标志 到 CPSR里面的开关&#xff08;图中未展现&#xff09; 最后cpu处理 此次我们先使用k1按键实现中断&#xff0c;即是eint8 …

requestIdleCallback和requestAnimationFrame有什么区别?

由react fiber引起的关注 组件树转为链表&#xff0c;可分段渲染渲染时可以暂停&#xff0c;去执行其他高优先级任务&#xff0c;空闲时在继续渲染&#xff08;JS是单线程的&#xff0c;JS执行的时候没法去DOM渲染&#xff09;如何判断空闲&#xff1f;requestIdleCallback 区…

想入门网络安全却不知道怎么入手,看这一篇就够了!

先聊聊&#xff0c;学习网络安全方向会遇到哪些问题&#xff1f; 打基础的时间长 学基础花费了很长的时间&#xff0c;光学语言都有好几门&#xff0c;有的人会止步于学习linux系统及命令的路上&#xff0c;更多的人会停在学习语言上面&#xff1b; 知识点掌握的不够清楚 对…

ML18_EM算法

1. 参数在贝叶斯网络中指的什么 2. 随机变量在贝叶斯网络中指的什么 在贝叶斯网络中&#xff0c;“随机变量”指的是网络中的节点&#xff0c;这些节点代表不确定事件或属性&#xff0c;它们可以取不同的值&#xff0c;并且这些值的概率分布通常未知或部分未知。随机变量可以表…

手搓LLM大模型:从零开始构建大语言模型

在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLMs&#xff09;无疑是最引人注目的明星之一。这些深度神经网络模型的出现&#xff0c;为自然语言处理&#xff08;NLP&#xff09;领域带来了前所未有的变革。那么&#xff0c;这些模型究竟是如何工作的&#xff1f;它…

2024最新推荐10款英文免费录屏软件,想要录制电脑屏幕的你快看过来

你是否曾想过&#xff0c;只需几个简单的步骤&#xff0c;就能将你的电脑屏幕变成一个生动的视频故事&#xff1f;无论是展示你的游戏技巧&#xff0c;还是创建教育视频&#xff0c;录屏软件都能助你一臂之力。但面对市场上琳琅满目的录屏工具&#xff0c;选择一个合适的可能是…

【卡码网C++基础课 19.洗盘子】

目录 题目描述与分析一、栈二、栈的操作三、代码编写 题目描述与分析 题目描述&#xff1a; 在餐厅里&#xff0c;洗盘子的工作需要使用到栈这种数据结构。 假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程&#xff0c;每个盘子都有一个编号。 盘子堆放区操作说明&…

计算机网络-VRRP切换与回切过程

前面我们学习了VRRP选举机制&#xff0c;根据VRRP优先级与IP地址确定主设备与备份设备&#xff0c;这里继续进行主备切换与主备回切以及VRRP抢占模式的学习。 一、VRRP主备切换 主备选举时根据优先级选择主设备&#xff0c;状态切换为Master状态&#xff0c;那当什么时候会切换…