当前位置: 首页 > news >正文

vue2 使用代码编辑器插件 vue-codemirror

vue 使用代码编辑器插件 vue-codemirror

之前用过一次,当时用的一知半解的,所以也没有成文,前几天又因为项目有需求,所以说有用了一次,当然,依旧是一知半解,但是还是稍微写一下子吧!万一以后用到,不用满网找资料了,个人学习记录,仅供参考,切勿尽信!

vue-codemirror 说明

首先我的项目是 vue2 版本的,vue codemirror v5/v6已经发布。这是一个基于以下内容的新版本CodeMirror@6并且仅对Vue3可用。自从CodeMirror@6新版本将不再支持直接浏览器引用UMD模块。简而言之,新版本是与之前的版本完全不兼容。如果您希望继续使用Vue2或更低版本的CodeMirror。

任意门

vue-codemirror Github 地址: https://github.com/surmon-china/vue-codemirror
codemirror 中文文档:https://olindk.gitbooks.io/codemirror/content/configuration.html
codemirror 英文文档:https://codemirror.net/doc/manual.html#config

vue-codemirror 安装

因为最新版本已经不支持 vue2 了,所以我不能安装最细版本的,只能指定支持 vue2 版本的插件,因此,安装下面两个插件,必须两个都安装哈,不能只安装一个嗷!

npm i vue-codemirror@4.x --savenpm i codemirror@5.x --save 

vue-codemirror 使用

具体根据上面提供的官方文档去看哈,我这就不展开说了,我就简单贴一下我的代码哈;

首先在需要代码编辑器的组件里面引入插件:

import { codemirror } from 'vue-codemirror'components: {codemirror
},

然后在 HTML 部分使用一下:

<codemirror v-model="code" @ready="onCmReady" :style="codemirrorStyle" :options="cmOptions"></codemirror>

其中 v-model 就是你要绑定编辑的代码;@ready 绑定了一个函数,目的是在完成之后添加一个事件,用来代码提示用;style 绑定的是这个编辑器的样式,比如字体样式、字体大小之类的;options 很重要,是对编辑器的配置信息;

再一个就是引入一下必要的文件,我用到了这一些,一些样式,代码校验啥的:

import 'codemirror/lib/codemirror.css'
import 'codemirror/addon/lint/lint'
import 'codemirror/addon/lint/lint.css'
import 'codemirror/addon/lint/json-lint'
import 'codemirror/addon/lint/javascript-lint'
import 'codemirror/mode/javascript/javascript.js'
import 'codemirror/theme/base16-dark.css'
import 'codemirror/addon/fold/foldgutter.css'
import 'codemirror/addon/fold/foldcode'
import 'codemirror/addon/fold/foldgutter'
import 'codemirror/addon/fold/brace-fold'
import 'codemirror/addon/fold/comment-fold'
import 'codemirror/addon/fold/markdown-fold'
import 'codemirror/addon/fold/xml-fold'
import 'codemirror/addon/fold/indent-fold'
import 'codemirror/addon/hint/show-hint.css'
import 'codemirror/addon/hint/show-hint.js'
import 'codemirror/addon/hint/javascript-hint'
import 'codemirror/addon/hint/xml-hint'
import 'codemirror/addon/hint/sql-hint'
import 'codemirror/addon/hint/anyword-hint'
import 'codemirror/addon/search/match-highlighter'
import 'codemirror/addon/edit/matchbrackets'
import 'codemirror/addon/edit/closebrackets'
import 'codemirror/mode/css/css.js'
import 'codemirror/mode/vue/vue.js'

然后再 data 里面创建一下必要参数:

	  code: '',cmOptions: {mode: 'text/javascript',gutters: ['CodeMirror-lint-markers', 'CodeMirror-linenumbers', 'CodeMirror-foldgutter'],lineNumbers: true,line: true,lint: true,lineWrapping: true,autofocus: true,autoCloseBrackets: true,foldGutter: true, // 块槽hintOptions: { completeSingle: true },matchTags: { bothTags: true },matchBrackets: true,showCursorWhenSelecting: true,styleSelectedText: true,styleActiveLine: true,autoRefresh: true,highlightSelectionMatches: {minChars: 2,trim: true,style: "matchhighlight",showToken: false},},codemirrorStyle: {fontSize: '18px',lineHeight: '150%',height: '450px',border: '1px solid #EBEEF5'}

其中在 option 绑定数据里面的 mode: 'text/javascript', 表示当前编辑器,解析的是 JavaScript 代码,这个很重要。

然后就是代码校验需要使用几个包,可能需要单独安装一下:

# 校验json相关
npm install jsonlint file system# 校验js相关
npm install jshint

安装完成之后呢,把他们引入并且挂载 window 上面就行,他会自己找到使用:

import jsonlint from 'jsonlint'
import { JSHINT } from 'jshint'window.JSHINT = JSHINT
window.jsonlint = jsonlint

最后就是代码提示,比如 js 的代码提示是吧!

    onCmReady(cm) {cm.on("inputRead", (cm, obj) => {if (obj.text && obj.text.length > 0) {let c = obj.text[0].charAt(obj.text[0].length - 1)if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {cm.showHint({ completeSingle:false }) // 自动填充关闭了它}}})},

但是代码提示框的层级可能会比较低,被其他元素盖住,可以提升一下层级:

<style>
.CodeMirror-hints {z-index: 30000!important;  // 其实也不用这么大啦!
}
</style>

然后就完事了!看一下效果:

在这里插入图片描述

其他

这玩意儿啊,除了可以编辑 JavaScript 代码,像是JSON、HTML、CSS都是可以的!

编写JSON

编写JSON的话,需要改一下模式:

mode: 'application/json'

看一下效果哈:

在这里插入图片描述

编写 HTML

编写 HTML 的话,需要改一下模式:

mode: 'text/html'

看一下效果哈:

在这里插入图片描述

编写 CSS

编写 CSS 的话,需要改一下模式:

mode: 'text/css'

看一下效果哈:

在这里插入图片描述

行,大体就这些东西!

相关文章:

vue2 使用代码编辑器插件 vue-codemirror

vue 使用代码编辑器插件 vue-codemirror 之前用过一次&#xff0c;当时用的一知半解的&#xff0c;所以也没有成文&#xff0c;前几天又因为项目有需求&#xff0c;所以说有用了一次&#xff0c;当然&#xff0c;依旧是一知半解&#xff0c;但是还是稍微写一下子吧&#xff01;…...

自动驾驶系列—智能巡航辅助功能中的横向避让功能介绍

自动驾驶系列—智能巡航辅助功能中的车道中央保持功能介绍 自动驾驶系列—智能巡航辅助功能中的车道变换功能介绍 自动驾驶系列—智能巡航辅助功能中的横向避让功能介绍 自动驾驶系列—智能巡航辅助功能中的路口通行功能介绍 文章目录 1. 背景介绍2. 功能定义3. 功能原理4. 传感…...

通过this.$options.data()重置变量时,会影响到引用了props或methods的变量

之前的文章我有提到过通过this.$options.data().具体某个值来将该值进行初始化 但我在项目中遇到了一个问题&#xff1a; 具体情况是&#xff1a;在data中定义一个变量时有用到methods中的一个方法&#xff0c;在后续的方法中我通过this. $options.data.值去重置了另一个数据&…...

[PM]产品运营

生命周期 运营阶段 主要工作 拉新 新用户的定义 冷启动 拉新方式 促活 用户活跃的原因 量化活跃度 运营社区化/内容化 留存 用户流失 培养用户习惯 用户挽回 变现 变现方式 付费模式 广告模式 数据变现 变现指标 传播 营销 认识营销 电商营销中心 拼团活动 1.需求整理 2.…...

流程控制语句

目录 前言 一、SET 语句 二、BEGIN END 语句 三、IF ELSE 语句 四、CASE 语句 五、WHILE 语句 六、GOTO 语句 七、RETURN 语句 前言 T-SQL 提供了用于编写过程性代码的语法结构&#xff0c;可用来进行顺序、分支、循环、存储过程等程序设计&#xff0c;编写结构化的模…...

杰发科技AC7840——SENT数据解析及软件Sent发送的实现

0. 测试环境 AC7840官方Demo板&#xff1b; 图莫斯0503 DSlogic U2Basic 使用引脚 输出脚&#xff1a;PB1 时钟&#xff1a;PB2&#xff0c;其他引脚可以不初始化&#xff0c;不接线 1. 数据解析 以下是SENT数据的格式&#xff08;1tick以3us为例&#xff09;&#…...

Java后端开发(十五)-- Ubuntu 开启activemq开机自启动功能

目录 1. 修改Wrapper.conf文件配置内容 2. 在/etc/systemd/system目录下创建activemq.service文件 3. 重启服务器,验证是否生效 4. 系统启动目标问题 操作环境: 1、Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-28-generic x86_64) 2、jdk17.0.11 3、apache-activemq-6.0.1 1. 修…...

56 网络层

本节重点 理解网络层的作用&#xff0c;深入理解IP协议的基本原理 对整个TCP/IP协议有系统的理解 对TCP/IP协议体系下的其他重要协议和技术有一定的了解 目录 前置认识ip协议基本概念协议头格式网段划分特殊的ip地址ip地址的数量限制私有ip和公有ip路由路由表生成算法 在复杂…...

MAC地址泛洪——华为ensp

首先搭建好网络拓扑&#xff0c;包含客户端、服务端、一台交换机 以及 云。 客户端client1和服务端server1各自配置好IP地址&#xff0c;服务端充当FTP服务器&#xff0c;启动ftp服务 其中要先配置cloud1相关配置&#xff0c;然后才可以进行连线&#xff0c; 第一步进行端口…...

golang 字符编码 gbk/gb2312 utf8编码相互转换,判断字符是否gbk编码函数, 字符编码转换基础原理解析, golang默认编码utf8

虽然golang里面的默认编码都是统一的unicode utf8编码&#xff0c; 但是我们在调用外部系统提供的api时&#xff0c;就可能会遇到别人的接口提供的编码非 utf8编码&#xff0c;而是gbk/gb2312编码&#xff0c; 这时候我们就必须要将别人的gbk编码转换为go语言里面的默认编码ut…...

CentOS(7.x、8)上安装EMQX

EMQX 是一个高度可扩展的分布式 MQTT 消息服务器&#xff0c;适用于 IoT、M2M 和移动应用程序。以下是在 CentOS 系统上安装 EMQX 的基本步骤&#xff1a; 在 CentOS 上安装 EMQ X 步骤 1: 添加 EMQ X YUM 源 首先&#xff0c;你需要添加 EMQ X 的官方 YUM 源到你的 CentOS 系…...

Mojo模型魔法:动态定制特征转换的艺术

标题&#xff1a;Mojo模型魔法&#xff1a;动态定制特征转换的艺术 在机器学习领域&#xff0c;模型的灵活性和可扩展性是至关重要的。Mojo模型&#xff08;Model-as-a-Service&#xff09;提供了一种将机器学习模型部署为服务的方式&#xff0c;允许开发者和数据科学家轻松地…...

多任务高斯过程数学原理和Pytorch实现示例

高斯过程其在回归任务中的应用我们都很熟悉了&#xff0c;但是我们一般介绍的都是针对单个任务的&#xff0c;也就是单个输出。本文我们将讨论扩展到多任务gp&#xff0c;强调它们的好处和实际实现。 本文将介绍如何通过共区域化的内在模型(ICM)和共区域化的线性模型(LMC)&…...

【PPT把当前页输出为图片】及【PPT导出图片模糊】的解决方法(sci论文图片清晰度)

【PPT把当前页输出为图片】及【PPT导出图片模糊】的解决方法 内容一&#xff1a;ppt把当前页输出为图片&#xff1a;内容二&#xff1a;ppt导出图片模糊的解决方法&#xff1a;方法&#xff1a;步骤1&#xff1a;打开注册表编辑器步骤2&#xff1a;修改注册表&#xff1a; 该文…...

TeraTerm 使用技巧

参考资料 自分がよく使うTeratermマクロによる自動ログインのやり方をまとめてみたよTera Term マクロでログインを自動化してみたTera Term のススメ 目录 简介一. 常用基础设置1.1 语言变更1.2 log设置 二. 小技巧2.1 指定host别名2.2 新开窗口2.3 设置粘贴多行命令时的行间…...

意得润色打折啦

新注册使用可以减15%&#xff0c;ABSJU202&#xff0c;直接使用哦ㅤ 此外&#xff0c;如果老板经费充足&#xff0c;预算高&#xff0c;完全可以试试他家的投稿套餐&#xff0c;科学深度编辑&#xff0c;从期刊选择&#xff0c;到投稿协助&#xff0c;投稿信都帮你写好&#xf…...

微软研发致胜策略 06:学无止境

这是一本老书&#xff0c;作者 Steve Maguire 在微软工作期间写了这本书&#xff0c;英文版于 1994 年发布。我们看到的标题是中译版名字&#xff0c;英文版的名字是《Debugging the Development Process》&#xff0c;这本书详细阐述了软件开发过程中的常见问题及其解决方案&a…...

学习大数据DAY21 Linux基本指令2

目录 思维导图 搜索查看查找类 find 从指定目录查找文件 head 与 tail 查看行 cat 查看内容 more 查看大内容 grep 过滤查找 history 查看已经执行过的历史命令 wc 统计文件 du 查看空间 管道符号 | 配合命令使用 上机练习 4 解压安装类 zip unzip 压缩解压 tar …...

【18】Android 线程间通信(三) - Handler

概述 接下来我们会从native层来分析一下&#xff0c;Handler做了什么&#xff0c;以及之前提到过的应用层的两个native的调用链。 nativeWake 最早接触这个方法还记得是什么时候吗&#xff1f;MessageQueue#enqueueMessage中&#xff0c;在这个方法的末尾&#xff0c;我们看…...

静态路由技术

一、路由的概念 路由是指指导IP报文发送的路径信息。 二、路由表的结构 1、Destination/Mask:IP报文的接收方的IP地址及其子网掩码; 2、proto:协议(Static:静态路由协议,Direct:表示直连路由) 3、pref:优先级(数值和优先级成反比) 4、cost:路由开销(从源到目的…...

SpringBoot缓存注解使用

背景 除了 RedisTemplate 外&#xff0c; 自Spring3.1开始&#xff0c;Spring自带了对缓存的支持。我们可以直接使用Spring缓存技术将某些数据放入本机的缓存中&#xff1b;Spring缓存技术也可以搭配其他缓存中间件(如Redis等)进行使用&#xff0c;将某些数据写入到缓存中间件…...

@RequestBody接收到的参数中如何限制List的长度?

在Spring MVC中&#xff0c;你可以使用Valid注解和自定义的验证注解来限制List的长度&#xff0c;防止DOS攻击。具体步骤如下&#xff1a; 创建自定义注解&#xff1a;首先&#xff0c;创建一个自定义注解来验证List的长度。 import javax.validation.Constraint; import jav…...

Linux C语言 54-目录操作

Linux C语言 54-目录操作 本节关键字&#xff1a;Linux、C语言、目录操作、遍历目录 相关C库函数&#xff1a;opendir、readdir、closedir 遍历目录 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <dirent.h> #include <…...

Java实战中如何使用多线程(线程池)及其为什么使用?

这个话题在入行之前就想过很多次&#xff0c;很多8古文或者你搜索的结果都是告诉你什么提高高并发或者是一些很高大上的话&#xff0c;既没有案例也没有什么公式去证明&#xff0c;但是面试中总是被问到&#xff0c;也没有实战经历&#xff0c;所以面试时一问到多线程的东西就无…...

kafka集群搭建-使用zookeeper

1.环境准备&#xff1a; 使用如下3台主机搭建zookeeper集群&#xff0c;由于默认的9092客户端连接端口不在本次使用的云服务器开放端口范围内&#xff0c;故端口改为了8093。 172.2.1.69:8093 172.2.1.70:8093 172.2.1.71:8093 2.下载地址 去官网下载&#xff0c;或者使用如…...

【python】Numpy运行报错分析:IndexError与形状不匹配问题

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

你有多自律就有多自由

当你失去对时间的控制权&#xff0c;生活也就失去了平衡。 真正对自己有要求的人&#xff0c;都是高度自律的人。 追求自己想要的生活&#xff0c;任何时候开始都不会晚&#xff0c;关键在于你能够坚持下去&#xff0c;以高度自律的精神&#xff0c;日复一日、年复一年的坚持下…...

Codeforces Round 959 (Div. 1 + Div. 2 ABCDEFG 题) 文字讲解+视频讲解

Problem A. Diverse Game Statement 给定 n m n\times m nm 的矩形 a a a&#xff0c; a a a 中的每一个数均在 1 ∼ n m 1\sim nm 1∼nm 之间且互不相同。求出 n m n\times m nm 的矩形 b b b&#xff0c; b b b 中的每一个数均在 1 ∼ n m 1\sim nm 1∼nm 之间且互…...

WSL2 Centos7 Docker服务启动失败怎么办?

wsl 安装的CentOS7镜像,安装了Docker之后,发现用systemctl start docker 无法将docker启动起来。 解决办法 1、编辑文件 vim /usr/lib/systemd/system/docker.service将13行注释掉,然后在下面新增14行的内容。然后保存退出。 2、再次验证 可以发现,我们已经可以正常通过s…...

分布式锁-redisson锁重试和WatchDog机制

抢锁过程中&#xff0c;获得当前线程&#xff0c;通过tryAcquire进行抢锁&#xff0c;该抢锁逻辑和之前逻辑相同。 1、先判断当前这把锁是否存在&#xff0c;如果不存在&#xff0c;插入一把锁&#xff0c;返回null 2、判断当前这把锁是否是属于当前线程&#xff0c;如果是&a…...

嘉兴南湖区建设局网站/产品推广方案范例

1 介绍 hive数据存储基于HDFS&#xff0c;没有专门的数据存储格式。 数据结构主要包括&#xff1a; 数据库文件表视图 可以直接加载文本文件&#xff0c;创建表时可以指定hive数据的列分隔符与行分隔符。 2 表 2.1 内部表 table 1&#xff09;介绍 与数据库中的table在…...

jsp网站开发学习心得/网站流量来源

本节书摘来自异步社区《Adobe Premiere Pro CS5经典教程》一书中的第1课&#xff0c;第1.3节&#xff0c;作者 【美】Adobe公司 &#xff0c;译者 许伟民&#xff0c;袁鹏飞&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.3 提供标准的数字视频工作流 用…...

企业门户网站解决方案/足球比赛统计数据

将地图导出成图片只能在Windows客户端软件进行&#xff0c;手机版、网页版无此功能&#xff1b;并且需要开通VIP才可以执行此操作&#xff0c;导出的图片像素大小和VIP级别有关&#xff0c;详见表1&#xff1a;表1将地图导出成图片的具体操作步骤&#xff1a;1、使用工具栏的图…...

网络组建与维护实训报告/北京seo排名公司

#★★★本文源自AlStudio社区精品项目&#xff0c; 【点击此处】查看更多精品内容 >>> (https://aistudio.baidu.com/aistudio/proiectoverview/public?ad-from4100) 特定领域知识图谱融合方案&#xff1a;文本匹配算法之预训练模型SimBert、ERNIE-Gram 文本匹配任务…...

烟台网站网站建设/市场营销策划公司排名

大家好&#xff0c;我是忆然&#xff0c;前段时间我在学习ItZik Ben-Gan、Lubor Kollar、Dejan Sarka所著的《Sql Server 2005 技术内幕&#xff1a;T-SQL查询》一书&#xff0c;在此我把一些学习的心得跟大家分享 在查询中逻辑查询和物理查询有着本质的区别&#xff0c;SQL不同…...

东莞好的网站建设公司/热点新闻事件

一、首先引用 JavaScript 和 CSS 文件&#xff1a;二、添加自定义的 CSS 样式&#xff1a;class"cnblogs_code_copy">.gridcell{padding:5px;}.fakeContainer{float:left;margin:5px;border:solid 1px #ccc;width:630px;height:250px;background-color:#ffffff;ov…...