簡(jiǎn)單配置web網(wǎng)頁(yè)嵌入代碼編輯器組件

1、導(dǎo)入插件

npm install codemirror

2、Api使用鏈接
[https://blog.csdn.net/jlu_lei/article/details/80259697]
3、引包

<template>
  <div class="json-editor">
    <textarea ref="textarea"/>
  </div>
</template>

<script>
import CodeMirror from 'codemirror'
import 'codemirror/addon/lint/lint.css'
import 'codemirror/lib/codemirror.css'
import 'codemirror/theme/rubyblue.css'
// require('script-loader!jsonlint')
import 'codemirror/mode/javascript/javascript'
import 'codemirror/mode/python/python'
import 'codemirror/addon/lint/lint'
import 'codemirror/addon/lint/json-lint'

export default {
  /* eslint-disable vue/require-prop-types */
  props: ['value'],
  data() {
    return {
      jsonEditor: false
    }
  },
  watch: {
    value(value) {
      const editor_value = this.jsonEditor.getValue()
      if (value !== editor_value) {
        this.jsonEditor.setValue(this.value)
      }
    }
  },
  // 初始化編譯器時(shí)可設(shè)置屬性
  // value:初始內(nèi)容
  // Mode:設(shè)置編譯器編程語(yǔ)言關(guān)聯(lián)內(nèi)容,對(duì)應(yīng)mine值
  // theme:編譯器的主題,需要引入對(duì)應(yīng)的包
  // tabSize:tab的空格寬度
  // lineNumbers:是否使用行號(hào)
  // smartIndent:自動(dòng)縮進(jìn)是否開(kāi)啟
  // indentUnit:縮進(jìn)單位
  // keyMap:快捷鍵,default使用默認(rèn)快捷鍵,除此之外包括emacs,sublime,vim快捷鍵,使用需引入工具
  // import codemirror/keymap/sublime.js
  // import codemirror/keymap/emacs.js
  // import codemirror/keymap/vim.js
  mounted() {
    this.jsonEditor = CodeMirror.fromTextArea(this.$refs.textarea, {
      lineNumbers: true,
      mode: 'python', 
      gutters: ['CodeMirror-lint-markers'],
      theme: 'rubyblue',
      lint: true
    })

    this.jsonEditor.setValue(this.value)
    this.jsonEditor.on('change', cm => {
      this.$emit('changed', cm.getValue())
      this.$emit('input', cm.getValue())
    })
  },
  methods: {
    getValue() {
      return this.jsonEditor.getValue()
    }
  }
}
</script>

<style scoped>
.json-editor{
  height: 100%;
  position: relative;
}
.json-editor >>> .CodeMirror {
  height: auto;
}
.json-editor >>> .CodeMirror-scroll{
  min-height: 500px;
}
.json-editor >>> .cm-s-rubyblue span.cm-string {
  color: #F08047;
}
</style>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容