测试平台系列(55) 引入AceEditor(代码编辑器)

简介: 引入AceEditor(代码编辑器)

回顾


我们上一节已经写好了左侧数据表目录,今天继续完成sql编辑器的部分。

调研组件


  • monaco
    因为我们的项目用的是React,市面上很多编辑器都是js编写,react提供了一层方便的封装。
    比如我们在HTTP调试页面用的JSON编辑器,是以monaco为原型封装成的React组件

13.jpg

这个就是monaco

monaco呢,是微软开源的,大家熟悉的VsCode其实内部核心也是monaco。

优点是美观,专业,缺点是使用比较复杂

  • AceEditor
    用过yapi的人都知道,里面填写JSON_SCHEMA的时候用到了JSON编辑器,会校验你的JSON格式。里头的编辑器就是AceEditor
    我觉得它的优点就是功能比较强大,包括代码补全,UI响应都做的很棒,唯一的缺点可能就是主题很少,不太好看。
  • CodeMirror
    这是我最开始调研过的一款插件,包括大名鼎鼎的leetcode都是用的它。如果用好了自然非常牛逼,但我确实玩不太转,觉得里面的API太生硬了。
    React对应的实现: react-codemirror2
    唯一缺点就是使用困难,遇到问题不好解决

最终选型


由于AceEditor我在公司实现了一套,为了避免重复造轮子,花更多的时间去搞一套新的。我决定直接搬运过来。

当然如果以后有时间,我会向leetcode学习,做一个更好用的编辑器。

封装编辑器组件


14.jpg

简单看看就行

接受value, 语言,改变value的事件以及高度和theme。这样我们就可以对编辑器的主题,内容等进行完美控制

还是看看下最终页面成果吧~

15.jpg

image

页面分为3块,左侧是上一节编写好的部分,右侧上半部分是编辑器,下半部分是返回结果

16.jpg

选中db后的效果

17.jpg

自动补全

18.jpg

切换主题

19.jpg

执行后的结果

渐渐地成型了一点~

后端bug修复


先给大家道个歉,自己上一节写的代码没有经过很严谨的测试,导致出了一些问题:

  • 问题1: 多个fat环境

20.jpg

这个问题我现在是修复了

可以看到,出现了2个fat数据。

仔细找一下原因,发现是这里出了岔子:

21.jpg

image

这里我们添加好第一个fat数据后,idx=0对不,所以env_index里面的数据是这样的:


env_idx = {"fat": 0}

那么当第二个fat来了,会取到idx=0,判断if not idx,这里not idx自动隐式转换为True了,导致又append了一次result。

所以这时候我们需要换个判断方式if idx is None,这个判断代表字典里面没有这个key。

22.jpg

这样就ok了


  • 问题2: 天真的以为MetaData可以复用

23.jpg

get_tables这个方法

还记得get_tables里面这个metadata变量吗?之前是通过方法传递进来的参数,这样只需要实例化MetaData()一次。

但是坑就坑在,后续生成的数据,也会带上之前获得的表信息,所以我们还是不能复用这个对象。

改造online_sql方法


前面我们已经实现过在线执行sql的方法了,但是会发现有一些问题。

  • datetime不是我们想要的
    所以我们需要自行处理,拿到我们标准的datetime。

24.jpg

编写2个新的方法,方法json_serialize是针对datetime数据进行序列化

拿到字段里面的keys(),也就是列名,用于前端展示。

  • 对于update这种没有返回结果的方法没有兼容

25.jpg

如果sql没有返回值,那一定是delete/insert/update之类的语句

我们返回更新的行数就好,不管是增删还是

添加全局loading,使得体验更好。

26.jpg

加载数据表的过程会比较缓慢

后端未来优化


由于数据表不会一直修改,我们可以把他们的数据放到redis之中。这样我们效率会提高很多,加载速度也不会像现在这么慢。

最后,pg的支持还不是很完善,目前来说处于待测状态,有感兴趣的小伙伴可以提供下pg的连接或者自测一下。

数据库的配置需要管理员,如果你不是可以联系我,我给你添加。


今天的内容就港(肝)到这里了,数据库这块总算告一段落了大家`周末happy`


相关文章
|
4月前
|
Kubernetes 测试技术 Perl
混沌测试平台 Chaos Mesh
混沌测试平台 Chaos Mesh
132 1
|
1月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
5月前
|
传感器 数据采集 监控
LabVIEW电池管理系统测试平台
LabVIEW电池管理系统测试平台
70 4
|
1月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
134 1
|
2月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
77 2
|
1月前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
64 0
|
4月前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
137 1
|
4月前
|
运维 Kubernetes 监控
|
5月前
|
传感器 存储 数据采集
LabVIEW阀性能测试平台
LabVIEW阀性能测试平台
56 0
|
6月前
|
jenkins Java 测试技术
电商返利平台的测试与持续集成
电商返利平台的测试与持续集成