vue-codemirror实现sql和json线上编辑器

这篇具有很好参考价值的文章主要介绍了vue-codemirror实现sql和json线上编辑器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实习小计01

今天老大让写一个线上编辑器,写的是sql和json两个编译器,sql的编译器要有提示,

老大扔过来两个选择,1:vue-codemirror;2:monaco-editor,一个前端小白,只会vue,所以果断选那个我有点沾边的(也就是vue-codemirror),到网上查了一下文档,照着文档大致做出来的,这里主要参考的文章有:http://t.csdn.cn/BTlnv和http://t.csdn.cn/8Gl0F其中第一篇文章是sql的,第二篇文章是json的,因为公司做的是基于vue2的项目,然后在网上看到vue-codemirror的v6和v7好像只能支持vue3,所以就装了vue-codemirror@4.0.6vue-codemirror实现sql和json线上编辑器

具体步骤:

1.首先看自己的项目用的是vue2还是vue3,如果是vue3可以直接安装

npm install vue-codemirror --save

        如果是vue2的项目就要指定版本安装,

npm install vue-codemirror@4.0.6 --save

        当然你也可以指定其他版本;

2.安装完成后就是引入,在main.js的文件内引入

import VueCodemirror from 'vue-codemirror'

import 'codemirror/lib/codemirror.css'

Vue.use(VueCodemirror)

 3.引入成功之后就可以开始使用了,直接新建个vue文件,把下面的粘贴进去就好,这样SQL编译器就成了

<template>

  <textarea ref="mycode" class="codesql" v-model="code" style="height:200px;width:600px;"></textarea>

</template>


<script>

  import 'codemirror/theme/ambiance.css'

  import 'codemirror/lib/codemirror.css'

  import 'codemirror/addon/hint/show-hint.css'


  const CodeMirror = require('codemirror/lib/codemirror')

  require('codemirror/addon/edit/matchbrackets')

  require('codemirror/addon/selection/active-line')

  require('codemirror/mode/sql/sql')

  require('codemirror/addon/hint/show-hint')

  require('codemirror/addon/hint/sql-hint')

    export default {

      name: 'CodeMirror',

      data () {

        return {

          code: '//sql语法编译器'

        }

      },

      mounted () {

        // debugger

        const mime = 'text/x-mariadb'

        // let theme = 'ambiance'//设置主题,不设置的会使用默认主题

        const editor = CodeMirror.fromTextArea(this.$refs.mycode, {

          mode: mime, // 选择对应代码编辑器的语言,我这边选的是数据库,根据个人情况自行设置即可

          indentWithTabs: true,

          smartIndent: true,

          lineNumbers: true,

          matchBrackets: true,

          // theme: theme,

          // autofocus: true,

          extraKeys: { 'Ctrl': 'autocomplete' }, // 自定义快捷键

          hintOptions: { // 自定义提示选项

            tables: {

              users: ['name', 'score', 'birthDate'],

              countries: ['name', 'population', 'size']

            }

          }

        })

        // 代码自动提示功能,记住使用cursorActivity事件不要使用change事件,这是一个坑,那样页面直接会卡死

        editor.on('cursorActivity', function () {

          editor.showHint()

        })

        // 挂载监听事件拿到输入的内容

        editor.on('change', (cm) => {

          console.log(cm.getValue())

        })

      }

    }

</script>


<style lang="less">

  .codesql {

    font-size: 11pt;

    font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;

  }

  .CodeMirror-hints {

    z-index: 99999;

  }

</style>

4.如果想做的是json编译器可以把第三步要黏贴的代码换成下面这段

<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/panda-syntax.css'
import 'codemirror/mode/javascript/javascript'
import 'codemirror/addon/lint/json-lint'
// 折叠代码
import 'codemirror/addon/fold/foldgutter.css'
import 'codemirror/addon/fold/foldcode.js'
import 'codemirror/addon/fold/foldgutter.js'
import 'codemirror/addon/fold/brace-fold.js'
import 'codemirror/addon/fold/xml-fold.js'
import 'codemirror/addon/fold/indent-fold.js'
import 'codemirror/addon/fold/markdown-fold.js'
import 'codemirror/addon/fold/comment-fold.js'

export default {
  name: 'JsonEditor',
  // eslint-disable-next-line vue/require-prop-types
  props: ['value'],
  data () {
    return {
      jsonEditor: false
    }
  },
  watch: {
    value (value) {
      const editorValue = this.jsonEditor.getValue()
      if (value !== editorValue) {
        this.jsonEditor.setValue(JSON.stringify(this.value, null, 2))
      }
    }
  },
  mounted () {
    this.jsonEditor = CodeMirror.fromTextArea(this.$refs.textarea, {
      lineNumbers: true,
      mode: 'application/json',
      gutters: ['CodeMirror-lint-markers', 'CodeMirror-linenumbers', 'CodeMirror-foldgutter'],
      theme: 'panda-syntax',
      lint: true,
      foldGutter: {
        // eslint-disable-next-line new-cap
        rangeFinder: new CodeMirror.fold.combine(CodeMirror.fold.indent, CodeMirror.fold.comment)
      }
    })
    // 下面这行不知道是干什么的,正常来说是不注释掉的,但会报错
    // this.jsonEditor.setValue(JSON.stringify(this.value, null, 2))
    this.jsonEditor.on('change', cm => {
      this.$emit('changed', cm.getValue())
      this.$emit('input', cm.getValue())
        //拿到你输入的值
      console.log(cm.getValue())
    })
  },
  methods: {
    getValue () {
      return this.jsonEditor.getValue()
    }
  }
}
</script>

<style scoped>
.json-editor {
  height: 100%;
  position: relative;
}
.json-editor >>> .CodeMirror {
  height: auto;
  min-height: 180px;
}
.json-editor >>> .CodeMirror-scroll {
  min-height: 180px;
}
.json-editor >>> .cm-s-rubyblue span.cm-string {
  color: #f08047;
}
</style>

 5.最后要注意看代码中的注释,因为每个人的项目都不一样,黏贴进去很有可能报错,所以一定要仔细排查,尤其是mounted的生命周期里,我在那里就报了个错,很是头疼,最后把那一行注释掉就好了,虽然不知道那一行是干啥的( ̄▽ ̄)"

6.实现效果:(我们这个是需求在弹窗里弹出来这个编译器,sql有提示,json没有提示)

vue-codemirror实现sql和json线上编辑器

 文章来源地址https://www.toymoban.com/news/detail-401197.html

 vue-codemirror实现sql和json线上编辑器

 

 

 

到了这里,关于vue-codemirror实现sql和json线上编辑器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端插件库之vue3使用vue-codemirror插件

    基于 CodeMirror ,适用于 Vue 的 Web 代码编辑器。 1.命令行安装 如果运行官网例子时, 报错: 可以在终端中安装对应文件, 解决问题 2.在需要的组件中配置 代码编辑区 支持代码编辑区, 满足白天/黑夜主题切换, 满足c++/python语言切换 不足, 没有满足代码提示 组件代码 vue3 新手作品

    2024年02月04日
    浏览(37)
  • vue3 codemirror关于 sql 和 json格式化的使用以及深入了解codemirror 使用json格式化提示错误的关键代码。包含了json格式化没有效果和json格式化提示错误

    后端返回一个json字符串,里面有value1、value2指定字段渲染sql语句,其他渲染json语句。 jsonlint 和 jsonlint-mod 的区别 简单理解:jsonlint校验json格式化是否有效,jsonlint-mod用来格式化后同时校验json格式化是否有效。 (1)JSONLint是一种可以验证JSON格式是否有效的工具。 它可以检查

    2024年04月28日
    浏览(36)
  • vue3代码编辑器组件codemirror-editor-vue3

    官方文档:https://github.com/RennCheung/codemirror-editor-vue3 国内镜像:https://renncheung.github.io/codemirror-editor-vue3/zh-CN/guide/getting-started 参考文档:https://codemirror.net/5/mode/index.html 点击参考文档,选择语言并点击在文章最后找到mode的格式 在配置项中修改mode,并引入对应语言js 如使用pyt

    2024年02月14日
    浏览(23)
  • Vue3 使用json编辑器

    安装 npm install json-editor-vue3 main中引入 main.js 中加入下面代码 不然会有报错,如jsoneditor does not provide an export named ‘default’。 图片信息来源-github 代码示例 补充说明 json-editor-vue3支持多种配置,如可选模式(多选) modeList 、初始模式 currentMode ,历史记录开关 history ,搜索功能

    2024年02月12日
    浏览(31)
  • VUE3使用JSON编辑器

    1、先看看效果图,可以自行选择展示效果 2、这是我在vue3项目中使用的JSON编辑器,首先引入第三方插件 3、引入到项目中 4、一般后端返回的是会将JSON转为String形式,我们传给后端也是通过这种形式,就可以通过后端拿到的数据进行JSON与String之间转换 5、例子: 6、参数 参数

    2023年04月21日
    浏览(24)
  • react-codemirror2 编辑器需点击一下或者延时才显示数据的问题

    现象:         Codemirror/组件的数据已经赋上值的情况下,初始状态不渲染数据,需要点击编辑框获取焦点后才展示,或者延迟了几秒才显示出来。 原因:         指定了一些依赖的版本,可能不兼容了一些功能,导致这个现象出现 解决:         1. 手动引入 自动刷新

    2024年02月13日
    浏览(26)
  • Vue2 集成 CodeMirror 实现公式编辑、块状文本编辑,TAG标签功能

    效果图  安装codemirror依赖 本示例为Vue2项目,安装低版本的依赖 实现 实现代码如下,里边涉及到的变量和函数自行替换即可,没有其他复杂逻辑。

    2024年02月10日
    浏览(24)
  • Vue集成Monaco Editor的使用,以及开发Python代码编辑器和Sql等

    ​微软之前有个项目叫做Monaco Workbench,后来这个项目变成了VSCode,而Monaco Editor(下文简称monaco)就是从这个项目中成长出来的一个web编辑器,他们很大一部分的代码(monaco-editor-core)都是共用的,所以monaco和VSCode在编辑代码,交互以及UI上几乎是一摸一样的,有点不同的是,

    2024年02月11日
    浏览(35)
  • GTA5线上小助手角色编辑器代码详解

    GTA5线上小助手 是一个非常受欢迎的游戏辅助工具,它可以帮助玩家更好的玩游戏,其中最受欢迎的功能之一就是角色编辑器。通过角色编辑器,玩家可以自定义自己的游戏角色,包括外观、技能、属性等方面。下面将详细介绍GTA5线上小助手角色编辑器代码。 一、什么是GT

    2024年02月02日
    浏览(181)
  • 在vue3中使用codemirror

    最近为了完成学校的大作业,需要制作markdown编辑器,为了用户输入方便,使用了codemirror来做编辑器。本文介绍的只是很简单的使用配置,更多内容请查阅官方文档。 具体的配置可以看官方网站 https://codemirror.net/5/doc/manual.html#config 第一种改css 第二种使用editor.setSize()方法,第

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包