vue-codemirror简单模拟高德API实时编译效果

准备

vue
nodeJs

基本实现步骤

  1. 安装代码编辑器 vue-codemirror
npm install vue-codemirror --save
  1. 引用 全局引用,main.js中
import { codemirror } from 'vue-codemirror'
import 'codemirror/lib/codemirror.css'
import "codemirror/addon/hint/show-hint.css";
Vue.use(codemirror)

vue单页中引用

import {codemirror } from 'vue-codemirror' // 引入组件
import 'codemirror/lib/codemirror.css'
import 'codemirror/mode/javascript/javascript' // 这js模式必须引入的
  1. 使用
 <codemirror
   ref="myCmGenerate"
   class="code-mirror"
   v-model="htmlcontent"
   :options="cmOptions"
   @changes="changes"
   @ready="onCmReady"
   @focus="onCmFocus"
   @input="onCmCodeChange"
   @scroll="onScrollFn"
 >
 </codemirror>
export default {
  name: "CodeMirror",
  components: {
    codemirror,
  },
   data() {
    return {
      // 内部真实的内容
      htmlcontent: "",
      cmOptions: {
        tabSize: 2, //制表符的宽度。默认为4。
        indentUnit: 4, //用于覆盖缩进发生单位的方面。应该是一个完全由空格或全部由制表符组成的字符串。如果未设置,则默认为2个空格
        mode:'javascript', //运行代码类型
        //mode: { name: "javascript", json: true },
        theme: "material", // 主题 material
        line: true,
        lineNumbers: true, // 显示行号
      },
    };
  },
}

问题

如何设置主题?

答:引用相应的主题Css文件,并在配置中设置指定项 theme: “material”, // 主题 material

import 'codemirror/theme/ayu-dark.css'
import 'codemirror/theme/blackboard.css'
import 'codemirror/theme/monokai.css'
import "codemirror/theme/material.css"; 
 theme: "material",//material主题

如何设置代码编译类型?

答:引用相应的js文件,并在配置中设置指定项 mode .例如 mode: “javascript”

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";
mode: 'application/json'

如何获取编辑器对象调用方法?

答: 编辑器组件上加上ref,通过ref获取。这个可以放到vue的computed里面,代码如下:

  mounted() {
    this.CodeMirrorEditor = this.$refs.myCmGenerate.codemirror;
    //var code = this.$refs.myCmGenerate.codemirror.getValue(); //编辑器中的code
  },

怎么设置编辑器高度自适应?
编辑器默认高度是300px,重新设置高度就可以了,官网给出的例子是

.CodeMirror {
  border: 1px solid #eee;
  height: auto;
}
.CodeMirror-scroll {
 height: auto;
 overflow-y: hidden;
 overflow-x: auto;
}

我自己解决方式是在编辑器上套了一层div(class=codemirror),设置div的高度并设置编辑器高度auto

.codemirror-container{
   overflow-y: scroll!important;
   height: 99.8%;
   background-color: khaki;
}
.CodeMirror {
 height: auto !important;
}

效果图

在这里插入图片描述

示例代码可以在 GitHub 里可以下载:https://gitee.com/Y7ethe/codemirror_dome

帮助

codemirror官网 链接: link.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值