codemirror 是一个非常强大的代码编辑器插件,但官方并没有提供 vue 的支持版本,不过跟 vue 集成的步骤并不复杂,以下是具体实现

更多精彩

相关网址

  1. Vue 官方插件库推荐的集成实现

    • 这个实现做的比较全面,但不支持动态语法高亮的切换
  2. codemirror 支持的语言类型
  3. codemirror 官网

实现效果

具体实现

  1. 首先需要运行 npm i codemirror --save 在项目中安装对应组件
<template><div class="in-coder-panel"><textarea ref="textarea"></textarea><el-select class="code-mode-select" v-model="mode"@change="changeMode"><el-option v-for="mode in modes":key="mode.value" :label="mode.label" :value="mode.value"></el-option></el-select></div>
</template><script type="text/ecmascript-6">// 引入全局实例import _CodeMirror from 'codemirror'// 核心样式import 'codemirror/lib/codemirror.css'// 引入主题后还需要在 options 中指定主题才会生效import 'codemirror/theme/cobalt.css'// 需要引入具体的语法高亮库才会有对应的语法高亮效果// codemirror 官方其实支持通过 /addon/mode/loadmode.js 和 /mode/meta.js 来实现动态加载对应语法高亮库// 但 vue 貌似没有无法在实例初始化后再动态加载对应 JS ,所以此处才把对应的 JS 提前引入import 'codemirror/mode/javascript/javascript.js'import 'codemirror/mode/css/css.js'import 'codemirror/mode/xml/xml.js'import 'codemirror/mode/clike/clike.js'import 'codemirror/mode/markdown/markdown.js'import 'codemirror/mode/python/python.js'import 'codemirror/mode/r/r.js'import 'codemirror/mode/shell/shell.js'import 'codemirror/mode/sql/sql.js'import 'codemirror/mode/swift/swift.js'import 'codemirror/mode/vue/vue.js'// 尝试获取全局实例const CodeMirror = window.CodeMirror || _CodeMirrorexport default {name: 'in-coder',props: {// 外部传入的内容,用于实现双向绑定value: String,// 外部传入的语法类型language: {type: String,default: null}},data () {return {// 内部真实的内容code: '',// 默认的语法类型mode: 'javascript',// 编辑器实例coder: null,// 默认配置options: {// 缩进格式tabSize: 2,// 主题,对应主题库 JS 需要提前引入theme: 'cobalt',// 显示行号lineNumbers: true,line: true},// 支持切换的语法高亮类型,对应 JS 已经提前引入// 使用的是 MIME-TYPE ,不过作为前缀的 text/ 在后面指定时写死了modes: [{value: 'css',label: 'CSS'}, {value: 'javascript',label: 'Javascript'}, {value: 'html',label: 'XML/HTML'}, {value: 'x-java',label: 'Java'}, {value: 'x-objectivec',label: 'Objective-C'}, {value: 'x-python',label: 'Python'}, {value: 'x-rsrc',label: 'R'}, {value: 'x-sh',label: 'Shell'}, {value: 'x-sql',label: 'SQL'}, {value: 'x-swift',label: 'Swift'}, {value: 'x-vue',label: 'Vue'}, {value: 'markdown',label: 'Markdown'}]}},mounted () {// 初始化this._initialize()},methods: {// 初始化_initialize () {// 初始化编辑器实例,传入需要被实例化的文本域对象和默认配置this.coder = CodeMirror.fromTextArea(this.$refs.textarea, this.options)// 编辑器赋值this.coder.setValue(this.value || this.code)// 支持双向绑定this.coder.on('change', (coder) => {this.code = coder.getValue()if (this.$emit) {this.$emit('input', this.code)}})// 尝试从父容器获取语法类型if (this.language) {// 获取具体的语法类型对象let modeObj = this._getLanguage(this.language)// 判断父容器传入的语法是否被支持if (modeObj) {this.mode = modeObj.label}}},// 获取当前语法类型_getLanguage (language) {// 在支持的语法类型列表中寻找传入的语法类型return this.modes.find((mode) => {// 所有的值都忽略大小写,方便比较let currentLanguage = language.toLowerCase()let currentLabel = mode.label.toLowerCase()let currentValue = mode.value.toLowerCase()// 由于真实值可能不规范,例如 java 的真实值是 x-java ,所以讲 value 和 label 同时和传入语法进行比较return currentLabel === currentLanguage || currentValue === currentLanguage})},// 更改模式changeMode (val) {// 修改编辑器的语法配置this.coder.setOption('mode', `text/${val}`)// 获取修改后的语法let label = this._getLanguage(val).label.toLowerCase()// 允许父容器通过以下函数监听当前的语法值this.$emit('language-change', label)}}}
</script><style lang="stylus" rel="stylesheet/stylus">.in-coder-panelflex-grow 1display flexposition relative.CodeMirrorflex-grow 1z-index 1.CodeMirror-codeline-height 19px.code-mode-selectposition absolutez-index 2right 10pxtop 10pxmax-width 130px
</style>

---------------------
作者:asing1elife
来源:CSDN
原文:https://blog.csdn.net/asing1elife/article/details/89249154
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

[转]vue-codemirror 代码编辑器相关推荐

  1. vue2使用Codemirror代码编辑器插件

    让我们先看看需求 :一个有SQL语言提示代码编辑器  一 . 我这里用的是vue2 三种方法,得指定版本号,不指定就是默认最新,版本6以上都是vue3的版本,引入使用会报错 vue3的版本叫vue-c ...

  2. vue集成codemirror代码编辑器

    点击上方" 青年码农 "关注 回复"特效源码"可获取各种资料 CodeMirror是一个用 JavaScript 为浏览器实现的通用文本编辑器.它专门用于编辑代 ...

  3. CodeMIrror.js在线代码编辑器简单使用

    代码高亮是程序员的刚需,不管是在笔记类,论坛类,博客类web网站中,都对代码高亮提出要求,不高亮的代码阅读体验很差,codeMirror是一个前端代码高亮库,使用方便.CodeMirror 是一款在线 ...

  4. vue2项目使用codemirror插件实现代码编辑器功能

    1.使用npm安装依赖 npm install --save codemirror 2.在页面中放入如下代码 <template><textarea ref="mycode ...

  5. 通过vue-codemirror和CodeMirror将代码编辑器添加到web项目中

    前言 最近项目中有一个需求是,需要添加一个代码编辑器到项目中.也不知道是谁设计的,将代码编辑器添加到项目中? 费了九牛二虎之力终于找到了 vue-codemirror 和 CodeMirror 感觉是 ...

  6. vue2实现codemirror在线代码编辑器(代码提示,行数显示..)

    项目需求 需要在管理系统模块中实现用户SQL语句自查询,实现一个代码编辑器,要求有执行,清空,代码提示,行数显示功能,,实现效果如下: -------------------------------- ...

  7. 在线js编辑器来喽!CodeMirror页面代码编辑器

    背景介绍:在公司的开发平台使用时需要用到js代码编写输入框,大家都是在vscode之类的编辑器写好后粘贴,在用重构项目的时候想到了这里的弊端,想在页面上也可以有js 的结构可编写代码,就清晰方便很多. ...

  8. CodeMirror 5.26.0 发布,在线代码编辑器

    CodeMirror 5.26.0 已发布,CodeMirror 是一款"Online Source Editor",基于 Javascript,短小精悍,实时在线代码高亮显示,它 ...

  9. 在线代码编辑器 Codemirror 的轻量级 React 组件

    代码编辑器 CodeMirror 的轻量级 React 组件 demo @uiw-react.github.io/react-codem- 特性: ? 自动根据 mode 配置加载 mode 文件. ...

  10. 在线代码编辑器 CodeMirror 配置说明 - javascript开发的代码语法高亮显示引擎

    CodeMirror是一款在线的支持语法高亮的代码编辑器.官网: http://codemirror.net/ 下载后,解压开得到的文件夹中,lib下是放的是核心库和核心css,mode下放的是各种支 ...

最新文章

  1. Failed to register Grid Infrastructure type ora.mdns.type
  2. 联想笔记本Win10 F1-F12失效的解决方法
  3. python跟php如何共用mysql_Python 3 多个函数共用一个mysql连接
  4. 如何得出数组里最大_相邻两数的最大差值(超巧妙解法)
  5. 机器翻译 - 日期翻译
  6. Cannot convert type ‘ASP.login_aspx’ to ‘System.Web.UI.WebControls.Login’的解决方法
  7. SpringBoot项目@Email不起作用
  8. KVM虚拟化查看虚拟机IP
  9. 使用AIR中的File对象
  10. [转载] 高等应用数学问题的matlab求解——第4章 线性代数问题的计算机求解
  11. python办公ppt_最全总结 | 聊聊 Python 办公自动化之 PPT(中)
  12. 笔录软件在linux系统,weblogic的在redhat linux下使用笔录
  13. wordpress专属线报网主题模板
  14. 数据库在一对一、一对多、多对多怎么设计表关系
  15. 数据三等分离散python_数据自习室01-描述性统计量
  16. 【黑马程序员pink老师前端】HTML综合案例(二)
  17. unity自定义组件
  18. 【信号处理】数字基带信号波形仿真含Matlab源码
  19. 注解类型异常:@ComponentScan ANNOTATION type filter requires an annotation typ
  20. Android解码视频每一帧,Android 获取视频缩略图(获取视频每帧数据)的优化方案

热门文章

  1. js数组去重,合集等操作
  2. Active Directory系列之十七:实战详解域信任关系
  3. dotnet 使用 Infer# 自动分析代码缺陷
  4. WPF实现环(圆)形菜单
  5. 使用c#接入华为云-内容审核
  6. 运维小姐姐说这篇Consul集群和ACL配置超给力(保姆级)
  7. 使用 Tye 辅助开发 k8s 应用竟如此简单(三)
  8. .NET 中依赖注入组件 Autofac 的性能漫聊
  9. T-SQL | 逻辑查询处理内幕学习
  10. 15分钟从零开始搭建支持10w+用户的生产环境(三)