在vue中使用codemirror格式化JSON

1. 下载指定版本的包 (避免引发不必要的错误)

yarn add codemirror@^5.64.0

2. 导入需要的文件

  import CodeMirror from 'codemirror'
  import 'codemirror/addon/lint/lint.css'
  import 'codemirror/addon/fold/foldgutter.css'
  import 'codemirror/lib/codemirror.css'
  import 'codemirror/theme/rubyblue.css'
  import 'codemirror/mode/javascript/javascript'
  import 'codemirror/addon/lint/lint'
  import 'codemirror/addon/lint/json-lint'

  // 折叠
  import 'codemirror/addon/fold/foldgutter.css'
  import 'codemirror/addon/fold/foldcode'
  import 'codemirror/addon/fold/foldgutter'
  import 'codemirror/addon/fold/brace-fold'
  import 'codemirror/addon/fold/comment-fold'

3. 注册

  



  import * as jsonlint from 'json-lint'
  window['jsonlint'] = jsonlint
  import CodeMirror from 'codemirror'
  import 'codemirror/addon/lint/lint.css'
  import 'codemirror/addon/fold/foldgutter.css'
  import 'codemirror/lib/codemirror.css'
  import 'codemirror/theme/rubyblue.css'
  import 'codemirror/mode/javascript/javascript'
  import 'codemirror/addon/lint/lint'
  import 'codemirror/addon/lint/json-lint'

  // 折叠
  import 'codemirror/addon/fold/foldgutter.css'
  import 'codemirror/addon/fold/foldcode'
  import 'codemirror/addon/fold/foldgutter'
  import 'codemirror/addon/fold/brace-fold'
  import 'codemirror/addon/fold/comment-fold'

  export default {
    data() {
      return {
        logInfo: null,
        editorText: null
      }
    },
    components: {},

    created() {},
    async mounted() {
      const result = await this.$api.getLogDataInfo(null, this.$route.query.serialNo)
      this.logInfo = JSON.stringify(result)
      this.editorText = CodeMirror.fromTextArea(this.$refs.mycode, {
        mode: 'application/json',
        lineNumbers: true, // 显示行号
        tabSize: 2,
        lint: true,
        styleActiveLine: true,
        foldGutter: true, // 启用折叠效果
        gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], // 配置折叠参数
      })
      var jsonData = JSON.stringify(result) //result是请求的后台数据
      var res = JSON.stringify(JSON.parse(jsonData), null, 4) //格式化后的json字符串形式
      this.editorText.setValue(res) //设置数据

      // 获取数据
      this.editorText.on('change', () => {
       console.log(this.editorText.getValue())
      })
    },
    methods: {}
  }


  .CodeMirror {
    height: 100vh;
    overflow: hidden;
  }

4. 效果

在vue中使用codemirror格式化JSON

 

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/6310ce44d6.html