zoukankan      html  css  js  c++  java
  • CodeMirror学习和使用

    <template>
      <div class="in-coder-panel">
        <textarea ref="textarea" placeholder="请输入查询SQL"></textarea>
      </div>
    </template>
    
    <script type="text/ecmascript-6">
    // 引入全局实例
    import _CodeMirror from 'codemirror'
    
    // 核心样式
    import 'codemirror/lib/codemirror.css'
    // 引入主题后还需要在 options 中指定主题才会生效
    import 'codemirror/theme/cobalt.css'
    import 'codemirror/theme/base16-light.css'
    import "codemirror/addon/hint/show-hint.css";
    
    // 需要引入具体的语法高亮库才会有对应的语法高亮效果
    import 'codemirror/mode/sql/sql.js'
    require("codemirror/addon/hint/show-hint");
    require("codemirror/addon/hint/sql-hint");
    
    
    // 尝试获取全局实例
    const CodeMirror = window.CodeMirror || _CodeMirror
    
    export default {
      name: 'in-coder',
      props: {
        // 外部传入的内容,用于实现双向绑定
        value: {
          type: String,
          require: true,
        },
      },
      data () {
        return {
          // 内部真实的内容
          code: '',
          // 默认的语法类型
          // 编辑器实例
          coder: null,
          // 默认配置
          options: {
            // 缩进格式
            tabSize: 2,
            // 主题,对应主题库 JS 需要提前引入
            // base16-light  cobalt
            theme: 'base16-light', //   
            // 显示行号
            lineNumbers: true,
            line: true,
            mode: 'sql',
            hintOptions: {
              completeSingle: false
            }
          },
        }
      },
      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)
            }
          })
          this.coder.on("inputRead", () => {
            this.coder.showHint();
          });
        },
      }
    }
    </script>
    
    <style lang="less" >
    .in-coder-panel {
      flex-grow: 1;
      display: flex;
      position: relative;
    
      .CodeMirror {
        flex-grow: 1;
        z-index: 1;
    
        .CodeMirror-code {
          line-height: 19px;
        }
      }
    
      .code-mode-select {
        position: absolute;
        z-index: 2;
        right: 10px;
        top: 10px;
        max-width: 130px;
      }
    }
    </style> 

     官网:https://codemirror.net/index.html

     主题效果展示:https://my.oschina.net/u/4353184/blog/4296869

     参考博客: https://blog.csdn.net/liujiawei00/article/details/104006146

    --------学习 交流 提升-----------
  • 相关阅读:
    python3笔记二十二:正则表达式之函数
    python3笔记二十一:时间操作datetime和calendar
    python3笔记二十:时间操作time
    python3笔记十七:python文件读写
    Spring常用注解
    Pytorch实现卷积神经网络CNN
    Keras实现autoencoder
    Keras实现LSTM
    TensorFlow实现CNN
    Recurrent Neural Networks vs LSTM
  • 原文地址:https://www.cnblogs.com/blogNYGJ/p/13962056.html
Copyright © 2011-2022 走看看