vue3使用vue-codemirror插件,实现富文本编辑sql语句

背景:

最近帮领导做个工具,要在vue3的项目里开发。

在表单里提供富文本编辑器来输入sql语句。

第一个踩雷的点就是我不知道下载哪个插件比较好,就搜索了一下“vue 富文本编辑器”,给我推荐了vue-quill-editor,我就去下载并引用了,捯饬半天出不来。最后发现

我是vue3项目,人家不支持啊。哎,有时候真觉得自己上班上的好蠢。

最后我下载了vue-codemirrorGitHub - surmon-china/vue-codemirror: @codemirror code editor component for @vuejs

使用:

1、安装

npm install codemirror vue-codemirror --save
npm i @codemirror/lang-sql
npm i @codemirror/theme-one-dark

2、引用&&注册

import { Codemirror } from 'vue-codemirror'
import { sql } from "@codemirror/lang-sql";
import { oneDark } from "@codemirror/theme-one-dark";

components: {
    Codemirror,
},

3、代码部分

<el-form-item label="查询SQL" :prop="`dataTaskConfigList.${index}.configSql`" :rules="rules.configSql" style="margin-top: 20px;">
    <codemirror v-model="item.configSql"
        placeholder="Code goes here..."
        ref="mycodemirror"
        :style="{ width: '100%', height: '480px' }"
        :autofocus="true"
        :extensions="extensions"
        :indent-with-tab="true"
        @blur="handleBlur($event,item)"
        :tab-size="2"/>
</el-form-item>
data() {
    return {
        extensions: [sql(),oneDark],
    }
}

blur事件是我的业务处理逻辑,需要将输入的sql语句中以@开始和结束的参数提取出来并去重,处理成一个数组对象的键值对形式。

handleBlur(e,item) {
            if(!item.configSql) {
                item.sqlParamList = []
                return
            }
            const regex = /@[^@]+@/g;
            let tempData = Array.from(new Set(item.configSql.match(regex))); //去重且匹配
            let sqlParamList = tempData.map(val => {
                return {
                    key: val,
                    value: dayjs().format('YYYY-MM-DD')
                }
            })
            item.sqlParamList = JSON.parse(JSON.stringify(sqlParamList))
        },

4、实现效果

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用vue-codemirrorvue项目中可能会遇到一些问题。以下是一些可能的问题和解决方案: 问题1:导入vue-codemirror时出现错误。 解决方案:确认是否正确导入了vue-codemirror,并且检查导入路径是否正确。还可以尝试使用npm/yarn命令重新安装vue-codemirror,确保安装过程没有出错。 问题2:vue-codemirror不显示或样式异常。 解决方案:首先,检查vue-codemirror组件是否正确添加到Vue实例中。其次,检查是否正确引入了相关的CSS文件。另外,可以尝试通过调整组件的父容器的样式来解决显示问题。 问题3:vue-codemirror无法读取或设置代码内容。 解决方案:确保正确绑定了代码内容的变量,例如使用v-model指令。还应检查是否正确设置了代码内容的选项,例如mode和value。 问题4:vue-codemirror无法监听代码修改。 解决方案:确认是否使用了正确的事件监听机制,例如使用@change或@input事件。另外,还可以尝试使用watch选项来监听代码内容的变化。 问题5:vue-codemirror的代码高亮或语法提示不起作用。 解决方案:确认是否正确设置了代码高亮或语法提示所需的选项,例如mode和options。还可以尝试更新vue-codemirror的版本,以便获得更好的语法支持。 总之,在使用vue-codemirror时,应该仔细检查导入、添加组件、样式设置、事件监听和选项配置等步骤,以确保能够正常使用和正确地显示代码编辑器组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值