先上图看效果:

SQL格式化使用的是 codemirror 和 sql-formatter 实现的(建议看文档搞)

使用就直接用就可以了,如果用的地方多建议 install 全局组件

    <codeEditorv-model:value="code":scene="type":height-size="200"></codeEditor>

对富文本编辑器进行封装。直接copy可用

<template><div class="in-coder-panel"><textareastyle="height: 100% !important"ref="textarea"v-model="code"></textarea></div>
</template><script>
// 引入全局实例
import _CodeMirror from "codemirror/lib/codemirror";//代码样式
import "codemirror/addon/hint/sql-hint";
// 核心样式
import "codemirror/lib/codemirror.css";
// 引入主题后还需要在 options 中指定主题才会生效
// 需要引入具体的语法高亮库才会有对应的语法高亮效果, 目前已动态引入
import "codemirror/theme/darcula.css";
// 主题样式
import "codemirror/addon/hint/show-hint.css";import {reactive,defineComponent,toRefs,getCurrentInstance,onMounted,watch,ref,onBeforeUnmount,
} from "vue";
import { format } from "sql-formatter";// codemirror 官方其实支持通过 /addon/mode/loadmode.js 和 /mode/meta.js 来实现动态加载对应语法高亮库
// 但 vue 貌似没有无法在实例初始化后再动态加载对应 JS ,所以此处才把对应的 JS 提前引入
import "codemirror/mode/clike/clike.js";
import "codemirror/mode/r/r.js";const codemirrorThemList = [];
const requireModules = require.context("codemirror/theme/", false, /\.css$/);
requireModules.keys().forEach((value) => {const newValue = value.replace(/^\.\//, "").replace(/\.css$/, "");codemirrorThemList.push(newValue);
});// 尝试获取全局实例
const CodeMirror = window.CodeMirror || _CodeMirror;
let coder = null; // 编辑器实例export default defineComponent({name: "codeEditor",props: {value: {type: String,default: "",},heightSize: {type: Number,default: 500,},scene: {type: String,default: "look", // add: 新增; edit: 编辑; look: 查看},eventType: {type: String,default: "blur", // 可用事件'change', 'blur'等等;具体参考codemirror文档},theme: {type: String,default: "darcula", // 编辑器主题色},},setup(props, { emit }) {const { proxy } = getCurrentInstance();const data = reactive({code: props.value, // 内部真实的内容// 默认配置options: {// mode: "text/x-java", // 不设置的话,默认使用第一个引用mode: "text/x-mariadb",// 缩进格式tabSize: 2,// 主题,对应主题库 JS 需要提前引入theme: props.theme,// 显示行号lineNumbers: true,readOnly:props.scene === "add" || props.scene === "edit" ? false : "nocursor", // true: 不可编辑  false: 可编辑 'nocursor' 失焦,不可编辑},// 初始化initialize: () => {// 初始化编辑器实例,传入需要被实例化的文本域对象和默认配置coder = CodeMirror.fromTextArea(proxy.$refs.textarea, data.options);const h = props.heightSize + "px";coder.setSize("auto", h);// 此处也可使用'change'事件,不过每次书写的过程中都会触发,为了提高性能,故默认使用'blur'coder.on(props.eventType, (coder) => {if (coder.getValue() != format(coder.getValue())) {coder.setValue(format(coder.getValue()));}emit("update:value", coder.getValue());});},// 动态引入语法高亮库importThemDynamic: () => {return new Promise((resolve) => {codemirrorThemList.forEach((value) => {if (props.theme === value) {import(`codemirror/theme/${props.theme}.css`);resolve();}});});},});onMounted(() => {// console.log('value:', props.value)data.importThemDynamic().then(() => {data.initialize();});});onBeforeUnmount(() => {coder.off(props.eventType);});return {...toRefs(data),};},
});
</script><style>
.in-coder-panel {flex-grow: 1;display: flex;position: relative;
}.in-coder-panel .CodeMirror {flex-grow: 1;text-align: left !important;z-index: 1;
}.in-coder-panel .CodeMirror .CodeMirror-code {line-height: 20px;
}
</style>

vue3 实现JSON格式化 可折叠 复制 使用了 clipboard   vue3-json-viewer

 npm install clipboard --save
npm install vue3-json-viewer --save
import { createApp } from 'vue'
import App from './App.vue'
import JsonViewer from "vue3-json-viewer"
const app=createApp(App)
app.use(JsonViewer)
app.mount('#app')
<json-viewer :value="Data" copyable boxed sort />

富文本(vue3)SQL格式化 JSON格式化相关推荐

  1. Android富文本开发,从0到1!

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Each night I put my head to my pi ...

  2. 【开源我写的富文本】打造全网最劲富文本系列之大话技术难点与特色设计。...

    文章开始前先上个图: 大话富文本技术概要: 在web领域,一提到富文本,大伙都觉得很高深,很难,很复杂.但是如果你看了我这篇简短的技术分析,你会发现其实富文本不算高深,称不上很难,只是比较复杂,需要用 ...

  3. PHP防止富文本编辑器让服务器产生过多垃圾图片

    PHP防止服务器富文本提交产生过多垃圾图片 1.前言 做一个项目,然后用到了,富文本编辑器,比如: 这种富文本编辑器可以完成由用户来生成,图文并茂的内容,有点像CSDN的写博客部分.然后出现了问题: ...

  4. (资源免费)Sublime Text 3如何格式化json文本+格式化Sql语句

    Sublime Text 3如何格式化json文本+格式化Sql语句 下面由sublime教程栏目给大家介绍sublime text3格式化json,希望对需要的朋友有所帮助! 问题研讨 当前后端对接 ...

  5. Winform Datagridview 单元格html格式化支持富文本

    Winform Datagridview 单元格html格式化支持富文本 示例: 源码:https://github.com/OceanAirdrop/DataGridViewHTMLCell 参考: ...

  6. quill 富文本编辑器自定义格式化

    quilljs 现在富文本编辑器轮子太多了,Github 上随便搜一下就有一堆,我需要实现的功能很简单,所以就佛系地选了 quilljs,quilljs 是一个轻量级的富文本编辑器. 链接: 官网:q ...

  7. monaco-editor 格式化json,sql

    初始化monaco-editor 微软的开源项目有点坑,纯英文的文档对很多刚开始前端的小朋友很不友好,刚好这段时间公司的项目遇到了文本编辑,发现这个居然是微软的vscode网页版,巧了,刚好开发工具正 ...

  8. ABP入门系列(8)——Json格式化

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 讲完了分页功能,这一节我们先不急着实现新的功能.来简要介绍下Abp中Json的用法.为什么要在这一 ...

  9. idea json格式化插件_IDEA常用插件

    1.CodeGlance 代码迷你缩放图插件 2. Codota 代码提示工具,扫描你的代码后,根据你的敲击完美提示 Codota基于数百万个开源Java程序和您的上下文来完成代码行,从而帮助您以更少 ...

  10. abp.ajax get,ABP入门系列之Json格式化

    讲完了分页功能,这一节我们先不急着实现新的功能.来简要介绍下Abp中Json的用法.为什么要在这一节讲呢?当然是做铺垫啊,后面的系列文章会经常和Json这个东西打交道. 一.Json是干什么的 JSO ...

最新文章

  1. 管理-Tomcat和Resin如何配置对指定后缀文件(如:.pptx)下载支持
  2. cisco3550交换机配置手册
  3. Gradient descent --梯度下降(to be continued)
  4. schema get_ddl
  5. 微信小程序获取用户的 OpenId (附前端代码)
  6. mysql 插入汉字异常: Incorrect string value: '\xE8\xB0\xA2\xE9\x9D\x99' for column 'uname' at row 1...
  7. 准确率、召回率、F1、mAP、ROC、AUC
  8. python聊天软件实现_python实现点对点聊天程序
  9. 2010年复旦MBA预审说明
  10. java里包含怎么算_java中怎么判断一个字符串中包含某个字符或字符串
  11. 实例讲解遗传算法——基于遗传算法的自动组卷系统【实践篇】
  12. ArcGIS导出辖区边界点坐标
  13. 用php做动态时钟,vue实现动态时钟以及日期
  14. 如何在PlayStation 4上查看或清除浏览历史记录
  15. 网站api自己怎么写_短视频文案怎么写?看这4个素材网站就够了
  16. [跟进]_会议“诊断腾讯”
  17. 使用国密算法签名PDF文件
  18. 基于websocket协议的即时通讯webapp(摘自本人毕业论文)
  19. Solidworks安装失败,出现内部错误:该产品组件的windows installer没按预期运
  20. 采集微信公众号文章只需几步(非搜狗微信)

热门文章

  1. 数据库系统基础教程(原书第三版)课后答案汇总
  2. 侯捷老师——STL源码剖析
  3. python如何导入项目,PyCharm如何导入python项目
  4. 学生信息管理系统_C语言实现_单链表
  5. mysql的主从同步查询_mysql主从同步
  6. 宝塔mysql主从复制_MySQL主从复制
  7. C语言项目源码2022必看必学版
  8. sql 语句美化工具
  9. 工作十年,分享看过的优质 Java 书籍
  10. 使用Hex2Bin软件将Hex文件转Bin文件