当前位置:网站首页>教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
2020-11-06 20:37:00 【叫我詹躲躲】
2017年的时候用过codemirror,当时用的是jQuery库、codemirror、beautify插件。主要实现代码的编辑功能、插入一些变量功能、beautify插件主要用来格式化代码,实现代码美化效果。不过这两年做项目都是用vue了,需要用到代码编辑器,于是我又找到了代码编辑器vue-codemirror,感觉组件再变,其原理、底层还是没多大变化,用vu e-codemirror,codemirror的方法,配置参数都是通用的,今天我就来分享一下我今天研究的vue-codemirror用法及一些坑的填法。我需要声明一点是我们项目用到的是框架ant-design-vue,所以弹窗我也直接拿来用了,有不懂的童鞋,可以参考https://www.antdv.com/components/modal-cn/。
1. 需要实现codemirror编辑器功能,主要是json数据的编辑
- codemirror基本的编辑代码功能
- 插入变量功能
- codemirror验证功能:主要验证代码格式,语法等,给出相应的提示
- 代码格式化(由于主要是json数据,所以暂时没引用其他组件,如果需要建议引用js-beautify,因为查资料发现codemirror在新的版本中已经去掉autoFormatRange方法)
大致如下图:
2. 写功能前需要安装的一些组件及用法简单说明,vue的就不说了,就光说这个编辑器需要的
2.1 vue-codemirror
- 安装vue-codemirror
npm install vue-codemirror --save
- vue-codemirror简单介绍
// require component
import {
codemirror } from 'vue-codemirror'
import jsonlint from 'jsonlint' //lint验证需要的组件,在下面详细讲
// require styles
import 'codemirror/lib/codemirror.css'
// require more codemirror resource...
import 'codemirror/mode/javascript/javascript' // 这js模式必须引入的
import 'codemirror/addon/selection/active-line' //光标行背景高亮,配置里面也需要styleActiveLine设置为true
import 'codemirror/keymap/sublime' //sublime编辑器效果
import 'codemirror/mode/css/css'
import 'codemirror/theme/monokai.css' //编辑器主题样式,配置里面theme需要设置monokai
//下面这几个引入的主要是验证提示类的,配置里的lint需要设置true,gutters: ['CodeMirror-lint-markers']
import 'codemirror/addon/lint/lint'
import 'codemirror/addon/lint/lint.css'
import 'codemirror/addon/lint/json-lint'
import 'codemirror/addon/display/autorefresh' //及时自动更新,配置里面也需要设置autoRefresh为true
// view
<codemirror
ref="jsonEditor"
v-model="jsonData"
:options="options"
style="height: 600px;"
/>
// component
export default {
components: {
codemirror
}
}
2.2 如何获取编辑器对象调用方法
这个跟codemirror还是有区别的,codemirror我们需要初始化编辑器,然后拿着初始化对象就可以调用方法了,vu e-codemirror怎么获取呢?其实很简单,我们在编辑器组件上加上ref,通过ref获取。这个可以放到vue的computed里面,代码如下:
.../
computed: {
codemirror () {
return this.$refs.jsonEditor.codemirror
}
}
这样我们在需要调用方法的时候可以调用这个编辑器对象,我们可以设置获取编辑器的值。
2.3 插入变量是编辑器对象调用replaceSelection方法,如下代码:
methods: {
insertVar () {
this.codemirror.replaceSelection('"{
{lanfeng}}"')
}
}
2.4 代码格式化
由于实现的json格式化,所以没引入其他组件,
直接通过设置编辑器值来实现:代码如下:
this.$nextTick(() => {
this.codemirror.setValue((JSON.stringify(JSON.parse(this.jsonData), null, 2)))
})
其实就是调用的setValue设置值,之所以用$nextTick,是由于弹窗刚加载的时候,有可能编辑器没初始化好,获取不到编辑器对象。
2.5 codemirror的配置,mode设置支持的语言
mode: 'application/json'
其他的配置语言可以查看https://codemirror.net/mode/
有关vue-codemirror的事件我就不再列举,可以查看https://www.npmjs.com/package/vue-codemirror
3. codemirror验证提示
- 需要引入插件jsonlint
刚开始按文档引入lint资源的时候,发现不起作用,设置了可多,也不起作用,后来查看源码发现依赖这个插件
npm install jsonlint --save //npm 安装组件
import jsonlint from 'jsonlint' //引入
window.jsonlint = jsonlint //全局化
关于这个功能浪费了很多时间,当试用不成功想着引用别的插件来解决,后来看看源码,还是用了jsonlint 插件
总结
以上就是我分享的有关vue-codemirror代码编辑器实现的json数据编辑、json数据语法验证提示、及编辑器一些方法的用法,其实有个功能还没实现,就是实现代码折叠,这个还在研究中,以上仅代码我个人观点,如有错误,请多指正。
关注lovepythoncn
回复关键字:code, 就可以获取源码地址
版权声明
本文为[叫我詹躲躲]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3995971/blog/4558939
边栏推荐
- Leetcode's ransom letter
- htmlcss
- Query意图识别分析
- In depth understanding of the construction of Intelligent Recommendation System
- 嘗試從零開始構建我的商城 (二) :使用JWT保護我們的資訊保安,完善Swagger配置
- 助力金融科技创新发展,ATFX走在行业最前列
- Menu permission control configuration of hub plug-in for azure Devops extension
- Top 10 best big data analysis tools in 2020
- C language 100 question set 004 - statistics of the number of people of all ages
- A debate on whether flv should support hevc
猜你喜欢
Can't be asked again! Reentrantlock source code, drawing a look together!
IPFS/Filecoin合法性:保护个人隐私不被泄露
采购供应商系统是什么?采购供应商管理平台解决方案
Troubleshooting and summary of JVM Metaspace memory overflow
至联云解析:IPFS/Filecoin挖矿为什么这么难?
Using Es5 to realize the class of ES6
3分钟读懂Wi-Fi 6于Wi-Fi 5的优势
如何将数据变成资产?吸引数据科学家
PHP应用对接Justswap专用开发包【JustSwap.PHP】
网络安全工程师演示:原来***是这样获取你的计算机管理员权限的!【维持】
随机推荐
Listening to silent words: hand in hand teaching you sign language recognition with modelarts
iptables基礎原理和使用簡介
速看!互联网、电商离线大数据分析最佳实践!(附网盘链接)
[C#] (原創)一步一步教你自定義控制元件——04,ProgressBar(進度條)
(2)ASP.NET Core3.1 Ocelot路由
嘗試從零開始構建我的商城 (二) :使用JWT保護我們的資訊保安,完善Swagger配置
Face to face Manual Chapter 16: explanation and implementation of fair lock of code peasant association lock and reentrantlock
Why do private enterprises do party building? ——Special subject study of geek state holding Party branch
业内首发车道级导航背后——详解高精定位技术演进与场景应用
hadoop 命令总结
Filecoin主网上线以来Filecoin矿机扇区密封到底是什么意思
Technical director, to just graduated programmers a word - do a good job in small things, can achieve great things
Analysis of ThreadLocal principle
The practice of the architecture of Internet public opinion system
数字城市响应相关国家政策大力发展数字孪生平台的建设
技術總監,送給剛畢業的程式設計師們一句話——做好小事,才能成就大事
从海外进军中国,Rancher要执容器云市场牛耳 | 爱分析调研
Network security engineer Demo: the original * * is to get your computer administrator rights! 【***】
Save the file directly to Google drive and download it back ten times faster
3分钟读懂Wi-Fi 6于Wi-Fi 5的优势