vue3 codemirror关于 sql 和 json格式化的使用以及深入了解codemirror 使用json格式化提示错误的关键代码。包含了json格式化没有效果和json格式化提示错误

这篇具有很好参考价值的文章主要介绍了vue3 codemirror关于 sql 和 json格式化的使用以及深入了解codemirror 使用json格式化提示错误的关键代码。包含了json格式化没有效果和json格式化提示错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


需求说明

后端返回一个json字符串,里面有value1、value2指定字段渲染sql语句,其他渲染json语句。


0、安装

"codemirror": "5.53.2", // codemirror组件
"codemirror-editor-vue3": "2.4.1", // vue3的codemirror组件。该组件基于Codemirror 5开发,仅支持vue3。
"jsonlint": "^1.6.3", // 可以验证JSON格式是否有效的工具
"jsonlint-mod": "^1.7.6", // 用来验证和格式化 JSON 文件的工具
"script-loader": "0.7.2", // 全局上下文中执行一次 JS 脚本
"sql-formatter": "15.1.2", // 将未格式化的SQL语句转换为格式化的语句

jsonlint 和 jsonlint-mod 的区别
简单理解:jsonlint校验json格式化是否有效,jsonlint-mod用来格式化后同时校验json格式化是否有效。
(1)JSONLint是一种可以验证JSON格式是否有效的工具。 它可以检查JSON对象是否符合JSON标准,包括缺失逗号、引号不匹配、缺失括号等问题,并给出详细的错误信息。 这将输出JSON文件是否有效的信息,以及任何错误消息。 如果JSON文件有效,则不会显示任何错误消息。
(2)jsonlint-mod是一个用来验证和格式化JSON 文件的工具。 它可以帮助开发人员检查JSON 文件是否符合语法规范,并对文件进行格式化,使得JSON 代码更加整洁易读。 如果文件中有语法错误,jsonlint-mod 将会报告错误信息,并给出指向错误所在位置的指针。
(3)区别:jsonlint 是一个比较早期的工具,通常是作为一个命令行工具使用。它可以帮助你验证JSON数据的正确性,并且在数据不符合规范时提供错误信息。jsonlint 也可以作为一个Node.js模块来使用,这样可以在JavaScript代码中直接调用其功能。
jsonlint-mod 是基于原始的jsonlint的一个修改版(或者说是一个fork)。它可能包含了一些额外的特性或者对原始工具的一些改进。开发者可能会选择jsonlint-mod来获取更好的性能、更详细的错误信息或者是一些特定的功能,这些可能在原始的jsonlint中不可用。

1. 导入js脚本

看到下面的代码,你就了解为什么需要导入script-loader(全局上下文中执行一次 JS 脚本),即执行下面所有的脚本

// sql 编辑器
import * as sqlFormatter from "sql-formatter";
import Codemirror from 'codemirror-editor-vue3';
import 'codemirror/mode/sql/sql.js';
import "codemirror/mode/javascript/javascript.js";
// language
import 'codemirror/mode/javascript/javascript.js';
// theme 主题
import 'codemirror/theme/monokai.css';
// 折叠功能
import 'codemirror/addon/fold/foldcode.js';
import 'codemirror/addon/fold/foldgutter.js';
import 'codemirror/addon/fold/foldgutter.css';
import 'codemirror/addon/fold/brace-fold.js';
// 自动提示
import 'codemirror/addon/hint/show-hint.js';
import 'codemirror/addon/hint/show-hint.css';
import 'codemirror/addon/hint/javascript-hint.js';
// 代码校验 lint
import 'codemirror/addon/lint/lint.js';
import 'codemirror/addon/lint/lint.css';
import 'codemirror/addon/lint/json-lint';
import jsonlint from 'jsonlint-mod';

// 其他
import 'codemirror/addon/edit/matchbrackets.js';
import 'codemirror/addon/edit/closebrackets.js';
import "codemirror/addon/lint/json-lint.js";
(window as any).jsonlint = jsonlint;

*问题: import jsonlint from ‘jsonlint-mod’;如果你是typescript+ vue3+ vite的项目,这里会提示找不到模块“jsonlint-mod”或其相应的类型声明。
解决:根目录的src文件夹下创建 文件:vite-env.d.ts,添加declare module ‘jsonlint-mod’ 即可。
vue3 codemirror中 json格式化,vue3,sql,json,数据库

2.配置

注意点: sql和json的区别在于 mode: 'sql' mode: 'application/json'

// sql的配置
  const sqlOptions = {
    autorefresh: true, // 是否自动刷新
    smartIndent: true, // 自动缩进
    tabSize: 4, // 缩进单元格为 4 个空格
    mode: 'sql', //编辑器的编程语言
    line: true, // 是否显示行数
    viewportMargin: Infinity, // 高度自适应
    highlightDifferences: true,
    autofocus: false,
    indentUnit: 2,
    readOnly: true, // 只读
    showCursorWhenSelecting: true,
    firstLineNumber: 1,
    matchBrackets: true,//括号匹配
    lineWrapping: true, //是否折叠
    gutters: [
      "CodeMirror-linenumbers",
      "CodeMirror-foldgutter",
      "CodeMirror-lint-markers",
    ],
    lineNumbers: true, //是否显示左边换行数字
    lint: true,  // 打开json校验
  }
  // json的配置
  const jsonOptions = {
    autorefresh: true, // 是否自动刷新
    smartIndent: true, // 自动缩进
    tabSize: 4, // 缩进单元格为 4 个空格
    mode: 'application/json', //编辑器的编程语言
    line: true, // 是否显示行数
    viewportMargin: Infinity, // 高度自适应
    highlightDifferences: true,
    autofocus: false,
    indentUnit: 2,
    readOnly: true, // 只读
    showCursorWhenSelecting: true,
    firstLineNumber: 1,
    matchBrackets: true,//括号匹配
    lineWrapping: true, //是否折叠
    gutters: [
      "CodeMirror-linenumbers",
      "CodeMirror-foldgutter",
      "CodeMirror-lint-markers",
    ],
    lineNumbers: true, //是否显示左边换行数字
    lint: true, // 打开json校验
  }

3.html处使用

<!-- 我的是在for循环中,所以v-model的值也是用原数据list[index]进行渲染的,这里为例不误导直接使用了value -->
<codemirror v-if="key === 'value1' 
|| key==='value2'" v-model:value="value" :options="sql
Options"  />
<codemirror v-else v-model:value="value" :options="jsonOptions"  />

4.js处理数据

(1)json格式化处理

value = JSON.stringify(JSON.parse(value), null ,2) // 数组对象格式化的逻辑
// JSON.stringify的第三个属性就是让我们格式化代码用的,直接传入数字x(10以内),就表示前面是x个空格的距离,我用的是2,也可以用'\t',这样就是一个tab的距离了。

(2)sql格式化处理

sqlFormatter.format sql格式化处理的方法

 value = sqlFormatter.format(value)

5.剩余问题:

问题1: 虽然有效果了,但是如果是数组对象数组对象的数据就没有格式化,一层嵌套的就可以格式化,不知道哪里错了。(已经解决)
------------------------ 2024-01-29---------------------------

解决json对象没有格式化问题:在debugger n小时后发现,其实是由于在处理数据的时候,判断该对象是否为object和array数据类型数据的时候,多嵌套了一层json.stringify 的方法导致渲染的时候我的数据是字符串,所以没有格式化成功。

------------------------ 2024-01-29---------------------------

问题2: 一开始会定义错误,后面不知道改了哪里,即使格式化错误也不会提示报错了。(于2024-01-27已经解决) 详情请看第6步
⬇️

6. 解决问题1:json格式化错误提示报错

问题: 一开始会定义错误,后面不知道改了哪里,即使格式化错误也不会提示报错了。
直接看效果:vue3 codemirror中 json格式化,vue3,sql,json,数据库

(1)打开官网

codemirror 官网地址CodeMirror 5:https://codemirror.net/5/

(2)打开官网

首先我们知道json-lint是校验json格式化是否错误的,直接搜索json-lint
vue3 codemirror中 json格式化,vue3,sql,json,数据库

(3)查看官网示例

vue3 codemirror中 json格式化,vue3,sql,json,数据库

(4)右键demo点击查看源代码发现关键代码

vue3 codemirror中 json格式化,vue3,sql,json,数据库

vue3 codemirror中 json格式化,vue3,sql,json,数据库

(5)json格式化错误提示报错的关键代码
lineNumbers: true,
mode: "javascript", // codemirror的编辑器类型
gutters: ["CodeMirror-lint-markers"], 显示行旁边的红x
lint: true, // 打开json校验

在option里面就可以看到json格式化数据错误提示报错的了。也就是第(1)步文章来源地址https://www.toymoban.com/news/detail-860371.html

到了这里,关于vue3 codemirror关于 sql 和 json格式化的使用以及深入了解codemirror 使用json格式化提示错误的关键代码。包含了json格式化没有效果和json格式化提示错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vscode vue3开发常用插件(附Prettier格式化配置)

    1、Chinese (Simplified) (简体中文) Language 2、Prettier - Code formatter 3、Vue 3 Snippets 4、Vue Language Features (Volar) 5、git graph 5、Auto Close Tag 6、Vue Theme 按ctrl+shift+p,搜索setting进入用户设置(全局),添加下面规则: 需要注意的是,prtttier格式化可以配置在很多文件上,配置字段也不太一样

    2024年02月14日
    浏览(59)
  • vue关于时间的操作(持续更新)(时间格式化、获取当前系统时间)

    2.1 封装全局过滤器 在utils中创建 filter.js 文件 2.2 在 main.js 进行全局注入 2.3 在其他页面使用

    2024年01月24日
    浏览(50)
  • vite初始化vue3项目(配置自动格式化工具与git提交规范工具)

    初始化项目 vite构建vue项目还是比较简单的,简单配置选择一下就行了 初始化命令 初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TS ADD JSX是否支持JSX ADD Vue Router是否添加Vue Router路由管理工具 ADD Pinia 是否添加pinia(状态管理工具) Add ESLinit 是否添加ESLint是否添加

    2024年02月12日
    浏览(61)
  • Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化

    我在这里直接是通过vite提供的默认模板来创建一个vue3 + ts的项目。这里可以cmd,然后npm -v来查看版本。 这样一个vue3 + ts的项目就创建好了,使用vscode打开该项目,然后执行 yarn 安装依赖 依赖安装完成后,执行   yarn dev  启动项目就可以在浏览器中正常访问了。   初始化

    2024年01月24日
    浏览(88)
  • vite 创建vue3项目,使用 Prettier 统一格式化代码,集成 ESLint、Stylelint 代码校验规范

    在团队开发中,保持代码风格的一致性和代码质量的高度,对于项目的可维护性和可读性非常重要。为了实现这一目标,我们可以使用工具来自动格式化代码并进行代码校验,在开发过程中捕获潜在的问题,并提供修复建议。 本示例中,我们将使用 Vite 来创建一个新的 Vue

    2024年04月28日
    浏览(60)
  • JSON格式化工具

    格式化JSON有多种方式,选两种。 我喜欢用这个网站:在线JSON工具 需要插件 - JSON Viewer。 安装方式: 2.1 点击工具栏“插件”-选择“插件管理…”,弹出插件管理窗口,在“可用”tab页,找到“JSON viewer ”,勾选,点击右上方的“安装”按钮,等待一会,就可以了。 2.2 如果因

    2024年02月05日
    浏览(86)
  • 【工具分享】程序员在线工具集(json格式化-html格式化-加密工具)

    演示地址 在线工具集 功能介绍 json格式化 。 JSON 可以将程序语言对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,可以将 JSON还原为数组或者一个基本对象

    2024年02月12日
    浏览(60)
  • VSCode打开Json 文件格式化

    在VSCode中打开JSON文件时,你可以使用以下步骤来格式化JSON并显示为多行: 使用快捷键: 在打开的JSON文件中,使用快捷键格式化文档。 Windows/Linux: Shift + Alt + F macOS: Shift + Option + F 右键菜单: 在打开的JSON文件中,右键单击,选择 \\\"Format Document\\\" 或 \\\"Format Selection\\\"。 命令面板

    2024年02月04日
    浏览(57)
  • Python(21)json.dumps()使用indent参数 格式化输出json数据格式

    json.dumps() 方法 将一个Python数据结构转换为JSON字符串 输出为 这样的格式一般都不优美,当数据很多的时候,看得就不是很直观方便。 可以使用 indent=4 参数来对json进行数据格式化输出,会根据数据格式缩进显示,读起来更加清晰 用法如下 输出为 json.dumps()方法,参数解释

    2024年02月08日
    浏览(49)
  • js将数组变量json格式化

    在js中,js变量和JSON是两个不同数据格式,两者的储存方式自然不相同。JSON格式是一种数据交换的规则,js变量则是javascript在程序需求场景中的数据表示。在js与不同语言的服务端进行数据交换过程中,js能够有内置的方法将其变量转化为JSON格式。 但是对于JS数组而言,如果

    2024年02月08日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包