使用json配置文件自动生成网页表单控件页面,让面向业务的开发开归本质。腾讯云开发者社区

在现代语言的开发中,大量要做的其实仅仅是一些配置信息,然后由各种框架、类库帮我们解决大部分有逻辑可行的部分。对网页开发来说,笔者也一路想实现一种效果,只需配置就可以完成网页表单的自动创建。攻夫不付有心人,终于找齐了这一愿景所需的轮子库,现在基本实现自己所要的效果。

在1999年的远古时代里,Excel已经支持数据绑定的方式,用外部的xml文件来控制Excel单元格的内容规范或ListObject的列表数据列规范。其中用到的是Xpath属性和Xml Schema Description(XSD)。

如下图中的Xpath文档描述

更多Excel的Xml数据操作和绑定的知识介绍可以参看ExcelHome很久之前翻译的著作【Excel2007 VBA参考大全】,有专门一个章节介绍。

在XSD文件中,可以定义许多约束关系,如字段类型属于文本还是数字,字段的文本长度,数字大小范围,是否必需项,默认值是什么等等,微软OFFICE中,曾经有一个组件infoPath,就是干这件事,通过界面的方式来配置出相应的XSD规范文件。让表单的填写最终可以对产生的数据质量可控。

作为数据交换技术,现有xml和json两大阵营,而多数现代Web Api已经转到Json的阵营,所以当下有大量的Json使用场景,其中数据映射也出现了专门的Json Schema Description对标以前的XSD。

而本篇所提及的使用Json配置来完成窗体表单的设计,准确来说,是使用Json Schema文件来完成。

同样地关于Json Schema的更多了解,可访问此网址,有介绍到对其实现的许多语言和工具:

而对于WebUI创建环节,有好几个相应的JavaScript类库,笔者有限的能力下,对其中JSON Form这一个类库有了更深入的了解和学习,本篇下面也是着重讲此类库的实现,有兴趣的朋友也可以对其他几项进行了解和学习,可能可以得到更好的解决方案。

先上效果图,下方红圈部分,为笔者打算在网页图表中,所开放出来的部分属性修改,使用上述提到的JSON Form库,直接通过写Json Schema后,直接渲染出来的,没有作相应的html和css代码编写(需要对后期效果美化,会用到css再精细化布局一下,例如下图中,默认单行一列显示,现处理成单行多列显示)。

除了上述展示的,使用纯配置的方式,仅需使用Json Schema文件,即可完成了整个网页表单的自动生成外,还有其他几点的优势,这里简单罗列下。

如上图中说到,每个网页表单控件中,根据我们定义的字段类型和其他规范要求,相应地在网页控件渲染出来后,这些约束已经在生效了,例如是枚举字段时,会渲染出一个下拉选择框,用户不能输入选择项以外的内容。

类似还有哪个字段是必填、数字字段类型它的范围是多少,限定其输入范围在最大最小值内等等。这些都不需要我们再进行其他的脚本编写。

以下图中,点击提交后,整个表单将以一个json对象数据的方式返回,不用再一个个表单控件去查找用户输入的值。

因其使用json作为数据交互的媒介,所以初始值和返回值都是一个json数组。只需在其配置中对初始值进行配置即可。

其初始值甚至可以是数组,用户界面相应地出现多条记录。

我们首先手头上有一个初始化时的json对象,而用户界面交互操作后得到了一个新的json对象(注意非必填项为空时,新对象会没有这个节点数据),如何快速将新的json对象合并到原来的初始化对象呢?

例如笔者在开发Vega图表时,本身就有一个初始化的json属性供Vega库来调用配置相关的属性,用户交互更新了这些属性,如何快速将其映射到原来的json对象中,让代码读取原结构即可实现更新效果。

当有规律的东西,请多多想想轮子,或许世界某个角落已经有人专门为我们实现了相应的功能,我们只需拿来主义就可以用上避免自己烧脑再想解决方案。

此轮子就是lodash,只需一个方法merge,即可完成我们需要效果。

作为一名合格的开发者,总需要找寻一些现成的工具来完成一些规律化的重复操作,例如生成这个json Schema文件,如果可以直接给一个json对象,就可以生成此json schema,岂不是美事么?

方向对了,就差寻找的过程,最终笔者为大家找到了一款VSCode插件 JSON Utils,可以一键生成json schema雏形。一条命令即可完成。

因JSON Form库使用的不是完全标准规范的Json Schema,特别是对数组结构的json Schema节点,所以上述生成的json Schema文件,可能还需要作一些小幅修改,具体细节自行去翻阅官方文档。

本文提及的几个库,请务必使用官方文档的方式来学习,任何其他零碎的文章分享方式学习,只会让自己更沮丧,这也是笔者自己亲身经历的感受,没有谁比作者更懂他自己所造的轮子的使用,更多细节只能在官方文档里找寻得到。

THE END
0.JSONViewerOnlineThe best free JSON viewer online. Format, validate, and explore JSON data with our powerful viewer, formatter, validator, and tree explorer. Works perfectly in Chrome and all browsers.jvzquC41gcyzl|tpxkkxg{3eqo5
1.JSON在线视图查看器(OnlineJSONViewer)json在线视图查看器(Online json Viewer), json在线编辑器, json在线格式化工具, json验证工具, json Editor OnlinejvzquC41yy}/l|tp0et0l|tpxkkx1
2.OnlineJSONviewer|w3resource>While working with JSON, often you may need a JSON viewer. This document discusses several online JSON viewer. Hopefully, this will help you to select one depending upon your requirement.jvzquC41yy}/y
3.打开JSON文件的六种方法,总有一种适合你json文件用什么打开有各种在线工具,如JSON Editor online,可以用来在设备上打开JSON文件。这些文件打开工具非常容易使用。要查看你的文件,你所需要的只是正确的互联网连接。以下是如何打开它。 1、打开web浏览器,在线搜索JSON编辑器。 2、单击右上角的“打开”图标。 3、选择从磁盘打开选项。 jvzquC41dnuh0lxfp0tfv8|{zv~0c{ykenk0fnyckny03<:;36:54
4.JSON在线视图查看器(OnlineJSONViewer)JSON在线视图查看器(Online JSON Viewer), JSON在线编辑器, JSON在线格式化工具, JSON验证工具, JSON Editor OnlinejvzquC41yy}/dnouqp4dqv4luqtwkn|gtpkx
5.JSON在线视图查看器(OnlineJSONViewer)视图 JSON数据 粘贴 复制 格式化 删除空格 删除空格并转义 去除转义 回到首页 关于 Viewer Textjvzq<84yyy4lwzzkfe4dqv4luqt0l|tpxkkxg{sgy0vir
6.JSONEditorOnline:editJSON,formatJSON,queryJSONJSON Editor Online is the original and most copied JSON Editor on the web. Use it to view, edit, format, repair, compare, query, transform, validate, and share your JSON data.jvzq<84yyy4kuxsgfkzptxsnkpk/exr1
7.最佳在线JSON查看器,树形结构这也是一个 JSON 文件查看器。上传 JSON 文件,上传 JSON 的 url 并在树形结构中查看。 这也是一个用于可视化的 JSON 可视化工具,在树视图中搜索 JSON。可折叠 JSON 视图允许折叠 JSON 以深入查看树结构。 最佳和安全的在线 JSON 查看器在 Windows、Mac、Linux、Chrome、Firefox、Safari 和 Edge 中运行良好。 jvzquC41dhuuqxq0eqs0|q4luqt.xrjygt
8.Chrome插件有多强大?珍藏的100个Chrome插件,个个是精品!收藏就是以前介绍过Github快速下载单个文件的扩展工具《Enhanced Github》 , 《Enhanced Github》 和《GitZip for github》 结合到一起, 就可以让我们快速下载, github任意仓库任意文件夹的优质资源了~ 039《Simplify Gmail》让网页版Gmail更清爽 好的扩展程序就应该这样, 让人见到后耳目一新, 使用的方法却非常简单。如果你并jvzquC41dnuh0>6evq4dqv4|jcupnnj153=95;8
9.139邮箱安卓客户端隐私政策您也可以阅读《139邮箱安卓客户端隐私政策摘要》,帮助您更直观、简洁地概览隐私政策内容。 139邮箱客户端向广大用户提供邮件收发管理、云盘文件管理服务。我们为了保证可以正常使用JSON解析框架,我们使用了fastjson。为了保证可以正常记录日志,我们使用了微信Mars,需要申请存储权限(读取您的SD卡中的内容、修改或删除您的jvzquC41jvsm77rckn4229=80et0rn4RGagqr8utkxgd{Ytnke`Cwitqkj/j}rn
10.OfficeOnlineViewer通过激活文本模式简化房间的网页。所有网页文本形式加载(无图像,动画或视频),因此内容更容易扫描和阅读。 ★查看纯文本页面 ★图片,视频,flash ,不会被The Missing JSON Inspector 办公插件 2015-03-02 17:11:08 在浏览器中检查JSON。检查JSON文件,您通常检查JavaScript对象在控制台的方式。没有任何难看jvzq<84yyy4dpyqwiktt0lto1qlgklj1qhljen2qpnoog6{kgyks1mjvckr/j}rn
11.JSONOnlineViewerOnline JSON Viewer. Convert string to json or json to xml with the free tool.jvzquC41eq{ov€ttfulsgn3eqo5kuxsxkg}ft
12.DOCX到JSON使用✨OnlineConvertFree⭐️转换器可以将任何docx格式文件免费转换成json。将您的docx文件转换成json格式只需要几秒钟的时间,而且这是一款免费在线转换器。✌ ️jvzquC41qprjpnhqpxksvowgg0ipo8j1euoxnwv/husojy1fqiy/}t/luuo1
13.在线JSON校验器|验证和检查JSON语法|ywe.cc大多数在线JSON校验器(如此工具)需要互联网连接才能访问网页及其功能。它们通常不提供离线版本。对于离线校验,您可以使用IDE扩展或编程库。 JSON校验如何帮助调试? JSON校验通过快速识别JSON数据中语法错误的确切位置和性质来帮助调试。与手动扫描可能很大的JSON文件以查找问题相比,这可以节省大量时间。清晰的错误消息会直接jvzq<84{yg4de8j/ET0l|tp1lypp6{cnkjbvxw
14.JSON在线视图查看器(OnlineJSONViewer)JSON在线工具,JSON在线视图查看器,支持JSON在线解析,JSON压缩及JSON格式化操作。在线JSON视图展示。jvzquC41uqptqw3eqo5kuxs1luuoaxsnkpk/j}rn
15.语音听写(流式版)WebAPI文档|讯飞开放平台文档中心语音听写(流式版)WebAPI 文档 # 接口说明语音听写流式接口,用于1分钟内的即时语音转文字技术,支持实时返回识别结果,达到一边上传音频一边获得识别文本的效果。 高阶功能-动态修正现在免费开放!多方言免切能力已上线!语音听写流式API JAVA-SDK-DEMO调用视频说明请点击 这里 观看。动态jvzquC41yy}/zo~wp0io1mte1cys1tkegjje}fvkqt0CYN0jvsm
16.JSON在线编辑器在线JSON转yaml,yaml转JSON 在线JSON转Toml-Toml转JSON JSON校验格式化工具(新) JSON转dart JSON转sql JSON转Python JSON转JSON Schema JSON转Objective-C工具 JSON转C++工具 JSON转Swift工具 JSON转Go语言代码工具 JSON转Rust工具 JSON转Crystal工具 JSON转TypeScript工具 JSON转JS PropTypes工具 JSON转Flow工具 JSON转jvzquC41yy}/dnouqp4dqv4luqtffryqtqtmkwj
17.易小灯塔的博客CONFIG_JSON', 'magic-pdf.json')改为# 定义配置文件名常量 # CONFIG_FILE_NAME = os.getenv('MINERU_TOOLS_CONFIG_JSON', 'magic-pdf.json') #1814756990lora模型训练器秋葉aaaki版https://www.bilibili.com/video/BV1AL411q7Ub朱尼酱的赛博炼丹https://www.bilibili.com/video/BV1zu411W7LW在线SDjvzq<84kpuspkw3eqo5
18.数据藏在json文件中,如何爬取以王者荣耀官网为例王者荣耀技能数据这是链接里面的源代码,方便阅读。 目录 一、网页源代码和elements的区别 1.例子 2.原因 二、解决方案 1.寻找数据存储文件 2.处理json文件 三、爬取相关数据 四、全部代码展示 五、结果展示 六、总结 一、网页源代码和elements的区别 1.例子 首先打开王者荣耀全部英雄所在的网址 jvzquC41dnuh0lxfp0tfv8ppkinujxtf42621jwvkerf1mjvckrt1:7266?93B
19.139邮箱安卓客户端隐私政策摘要8.4.JSON解析框架/微信Mars记录日志/请求网络 应用获取,读取SD卡、写入SD卡、IP地址、网络状态信息、日志信息 8.5. 应用内部数据处理: 应用获取,本应用包名信息 8.6. 网页打开与浏览: 应用获取,剪切板、获取应用安装列表、传感器(加速度传感器、陀螺仪传感器)、设备网络信息(网络类型、网络状态信息、更改网络的连接性)、IP地址 9.应 jvzq<84jvor60vfkn0712A;0ep5qg8UGacvq1ywkxcizRxqke{Gcu}wceveBpmwqkf4ivvq
20.JSONEditor:在线JSON数据处理工具使用与集成指南JSON-Editor是一种用于编辑和解析JSON数据的工具。它的主要作用是提供一个用户友好的界面,让开发者可以直观地操作JSON数据。通过这种方式,开发者可以避免手动编辑JSON文件可能引入的错误,并且可以更快地进行调试和数据测试。 1.2 JSON-Editor的主要特性 JSON-Editor的主要特性包括数据的可视化编辑、数据查看与格式化、JSONjvzquC41dnuh0lxfp0tfv8|gkzooa<9384>638ftvkimg8igvcomu8665:947@7
21.人工智能(crawler)——爬虫综合crawler爬虫第四章:介绍了怎么对爬取到的内容进行提取,对结构化的数据与非结构化的数据分别怎么进行提取,常见的文件格式JSON,XML,HTML等,及Beautiful Soup,lxml,正则表达式等等提取数据的方法,并对各种数据,数据解析方法及使用场景进行了总结。 第五章:介绍了针对动态网页数据的抓取,可以采用的策略:模拟网络数据包的过程及使用内jvzquC41dnuh0lxfp0tfv8vsa4=3;@8;51gsvrhng1jfvjnnu1>28<5996
22.jsonfp (file-like object) -- 文件型对象 obj 将为序列化输出的目标。 json 模块总是产生 str 对象,而不是 bytes 对象,因此 fp.write() 必须支持 str 输入。 skipkeys (bool) -- 如为 True,则不为基本类型 (str, int, float, bool, None) 的键将被跳过而不会引发 TypeError。 默认为 False。 ensurejvzquC41fqit0y~vjqt/q{l1|j3dp881nkhsc{~1luuo0qyon
23.JSON在线解析格式化验证Json中文网致力于在中国推广Json,并提供相关的Json解析、验证、格式化、压缩、编辑器以及Json与XML相互转换等服务jvzquC41yy}/l|tp0et0
24.Python:Scrapy分布式爬虫打造搜索引擎集合篇推荐前往我的个人博客进行阅读:http://blog.mtianyan.cn/ 目录分章效果更佳哦 分章查看目录: Scrapy分布式爬虫打造搜索引擎 - (一)基础知识 Scrapy分布式爬虫打造搜索引擎 - (二)伯乐在线爬取所有文章 Scrapy分布式爬虫打造搜索引擎 - (三)知乎网问题和答案爬取 jvzquC41dnuh0lxfp0tfv8|gkzooa<9366>5:8ftvkimg8igvcomu8=;8763:9
25.网页中的json文档,怎么保存到本地json怎么下载到本地文章浏览阅读7.2k次,点赞11次,收藏10次。本文介绍了在火狐和谷歌浏览器中使用两种不同的方法保存网页:火狐是右键菜单的另存为或点击三条横线;谷歌浏览器同样支持右键另存为操作。jvzquC41dnuh0lxfp0tfv8Gncpqjv:4ctvodnn4fgvgjn|4356=42A<5