Vue json编辑器之bin-code-editor的使用

最近在做一个vue后台项目,需要一个json编辑器,要求能够格式化json数据,同时也支持编辑功能。搜搜索索一堆发现bin-code-editor插件就可以实现这个功能,话不多说,搞起来。

bin-code-editor

代码编辑器组件,0.1.0版本默认只支持json代码,后期再进行扩展。

npm 安装

推荐使用npm安装,它能更好地和webpack打包工具配合使用。而且可以更好的和 es6配合使用。并且支持按需引入

npm i bin-code-editor -S
# or 
yarn add bin-code-editor

引入

在 main.js 中写入2行

import Vue from 'vue';
import CodeEditor from 'bin-code-editor';
import 'bin-code-editor/lib/styles/index.css';
import App from './App.vue';

Vue.use(CodeEditor);

new Vue({
  el: '#app',
  render: h => h(App)
});

test.vue文件

<template>
  <div style="width: 70%;margin-left: 30px;margin-top: 30px;">
    <b-code-editor v-model="jsonStr" :auto-format="true" :smart-indent="true" theme="dracula" :indent-unit="4" :line-wrap="false" ref="editor"></b-code-editor>
    <br>
    <el-button type="primary" @click="onSubumit">提交</el-button>
  </div>
</template>

<script>
  const jsonData =`{
    "employees": [{
      "firstName": "Bill",
      "lastName": "Gates"
    }, {
      "firstName": "George",
      "lastName": "Bush"
    }, {
      "firstName": "Thomas",
      "lastName": "Carter"
    }]
  }`
  export default {
    data() {
      return {
        jsonStr:jsonData
      }
    },
    methods: {
      // 检测json格式
      isJSON(str) {
        if (typeof str == 'string') {
          try {
            var obj=JSON.parse(str);
            if(typeof obj == 'object' && obj ){
              return true;
            }else{
              return false;
            }

          } catch(e) {
            return false;
          }
        }else if (typeof str == 'object'  && str) {
          return true;
        }
      },
      onSubumit(){
        if (!this.isJSON(this.jsonStr)){
          this.$message.error(`json格式错误`)
          return false
        }
        this.$message.success('json格式正确')
      }
    }
  }
</script>
<style>

</style>

访问测试页面,效果如下:

Vue json编辑器之bin-code-editor的使用

输入错误的值,点击执行,会有提示:

Vue json编辑器之bin-code-editor的使用

详细内容官网查看:开发文档 | GITHUB

另外也在网上找到另一个json插件叫vue-json-editor ,也可以实现对json的展示与校验,下面我们来看看对它的使用方法。

vue-json-editor 使用

npm安装

npm install vue-json-editor -S

使用

test.vue文件:

<template>
  <div style="width: 70%;margin-left: 30px;margin-top: 30px;">
    <vue-json-editor
      v-model="resultInfo"
      :showBtns="false"
      :mode="'code'"
     
      @json-change="onJsonChange"
      @json-save="onJsonSave"
      @has-error="onError"
    />
    <br>
    <el-button type="primary" @click="checkJson">确定</el-button>
  </div>
</template>

<script>
  // 导入模块
  import vueJsonEditor from 'vue-json-editor'

  export default {
    // 注册组件
    components: { vueJsonEditor },
    data() {
      return {
        hasJsonFlag:true,  // json是否验证通过
        // json数据
        resultInfo: {
          'employees': [
            {
            'firstName': 'Bill',
            'lastName': 'Gates'
            },
            {
              'firstName': 'George',
              'lastName': 'Bush'
            },
            {
              'firstName': 'Thomas',
              'lastName': 'Carter'
            }
          ]
        }
      }
    },
    mounted: function() {
    },
    methods: {
      onJsonChange (value) {
        // console.log('更改value:', value);
        // 实时保存
        this.onJsonSave(value)
      },
      onJsonSave (value) {
        // console.log('保存value:', value);
        this.resultInfo = value
        this.hasJsonFlag = true
      },
      onError(value) {
        // console.log("json错误了value:", value);
        this.hasJsonFlag = false
      },
      // 检查json
      checkJson(){
        if (this.hasJsonFlag == false){
          // console.log("json验证失败")
          // this.$message.error("json验证失败")
          alert("json验证失败")
          return false
        } else {
          // console.log("json验证成功")
          // this.$message.success("json验证成功")
          alert("json验证成功")
          return true
        }
      },
    }
  }
</script>

<style>
</style>

插件参数说明:

<vue-json-editor
      v-model="resultInfo"  // 绑定数据resultInfo
      :showBtns="false"  // 是否显示保存按钮
      :mode="'code'"  // 默认编辑模式
       // 显示中文,默认英文
      @json-change="onJsonChange"  // 数据改变事件
      @json-save="onJsonSave"  // 数据保存事件
      @has-error="onError"  // 数据错误事件
    />

相关说明:

  • resultInfo  默认绑定的变量,这个变量可以为空,编辑器会显示为{}
  • :showBtns 这里不显示保存按钮,为什么呢?原因有2个。1. 默认样式不好看。2. 只能当json数据正确,才能点击保存按钮,否则禁止点击。
  • json-changejson-savehas-error 这3个事件,是会实时触发的。

这里我额外加了一个检测方法,用来判断json数据是否正确。默认标记为true,当不正确时,会改变状态为false。

访问

点击确定,提示成功

vue-json-editor

改为错误的,点击确定,会提示失败。

vue-json-editor

注意:这个json编辑会带有下来菜单,实际项目中,需要去除,比较用户误操作。

在实际使用中发现几个问题:

  1. 输入中文时,传给后端的值不多;
  2. 输入大量json时,会有部分数据丢失。

因此,因此最终我们使用了bin-code-editor编辑器。

总结

以上就是自己在实际项目中测试使用的两个vue版的json插件心得,至于用哪一个,小伙伴们根据自己的实际需要来定,感谢阅读。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:
1. 本站所有文章教程及资源素材均来源于网络与用户分享或为本站原创,仅限用于学习和研究。
2. 如果内容损害你的权益请联系客服QQ:1642748312给予处理。
码云笔记 » Vue json编辑器之bin-code-editor的使用

2 评论

  1. 引入vue3版本怎么使用 为什么显示空白

    1. 用的那个?是这个bin-code-editor吗?

发表回复

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们