简介

飞码是京东科技研发的低代码产品,可使营销运营域下web页面快速搭建。飞码是单web页面搭建工具,从创建页面到监测再到投产的一站式解决方案。会通过七篇文章介绍飞码,分别是:(1)背景与数据结构设计,(2)如何便捷配置出页面-1,(3)如何便捷配置出页面-2,(4)如何便捷配置出页面-3,(5)如何便捷配置出页面-4,(6)如何便捷快速验证实现投产及飞码探索,(7)飞码画布的设计。

一、背景与分析

营销域下web页面逻辑复杂、接口多、UI要求较高等特性。在复杂业务下使用ProCode需要较多调试与自测才可以达到业务期望值。飞码的目标是从ProCode到LowCode,再到NoCode。如何使用LowCode或NoCode赋能营销域下的场景,飞码认为需要从以下两个大方面解决。

1、 如何便捷配置出web页面(编辑态)

1-1、 数据源(接口):便捷数据源配置、同时也支持复杂数据源扩展能力

1-2、 组件:如何用低代码能力快速创建组件;如何快速集成第三方组件;组件与平台是解耦;组件的属性、样式、数据、事件可以定制化配置。

1-3、 模板:不同页面之间有相同的区域可以进行便捷抽取为模板;飞码官方提供常用的模板。

1-4、 数据:页面中的数据具备共享能力;数据源可以复用;数据分类清晰;常见固定数据可配等。

1-5、 事件:组件中各种事件支持配置,串行事件,并行事件;事件支持调用其他事件;事件与数据共享需要打通。

1-6、 业务支持:需要具备配置埋点、权限等能力,函数便捷配置能力。

1-7、 收藏与升级:具备收藏模板再次开发能力与页面收藏再次开发能力。

1-8、 页面UI结构:页面的组件结构,便捷的排版与布局。

1-9、 画布功能:支持精准拖拽、支持上下移动复制、可对特定组件扩展特定能力。复杂区域配置应支持局部画布能力。

1-10、 监测:对配置有问题的组件属性,方法等可以监测定位;也需要定位弹框,事件配置问题等。

1-11、 页面配置:页面全局数据、页面入参、需要支持动态配置能力。

1-12、 页面数据导入导出:页面数据DSL支持便捷导入导出能力。

1-13、 其他能力:回退上一步,历史、预览等能力。

2、 如何便捷快速验证并投产(运行态)

2-1、数据中心,事件中心如何协议工作。

2-2、不依赖环境:对vue2.x、vue3.x 项目都可以支持,复杂业务场景如何支持。

2-3、投产页面问题定位:快速找到并给出可能出现的错误位置,包含:数据类型错误、接口错误、组件错误等;每一个组件显示与隐藏规则图谱,每一个事件调用关系图谱等。

于是得出至少需要满足以上2个大能力点以及对应16个细化点(下文中会使用16个细化点描述)。才可以保障从LowCode或NoCode。

二、飞码编辑态功能简介

便于用户操作,飞码将组件与模板相关能力放在搭建平台的左上角,具有共享属性(数据源、事件、弹框、函数、数据)的部分配置放在页面的左下角。根据业务线不同,业务组件放在基础组件下方。在页面的顶部区域设计有FMHelper能力,可对页面配置内容做监测。详见图1所示。

图1

三:数据结构分析与设计

设计LowCode或NoCode,需要先设计相关的DSL。DSL设计是需要满足字段少、可扩展、无异议等性质。根据部门内部技术栈使用与积累情况,飞码使用vue技术栈进行设计与开发。对比vue中接口VNode与VNodeData数据结构,结合需要满足2个大能力点以及对应16个细化点。可以推导出飞码组件父级数据结构defaultData如下图2所示:

图2

可以看出,该数据结构并不能满足上述16个细化点。数据源、数据、事件、弹框具有全局性质。飞码的方案是寻址查找,飞码DSL数据结构如图3所示。

图3

四:数据源、数据、事件、弹框的数据结构分析

数据源:前端视角认为数据源等同于接口(API),接口是否被调用是通过事件触发的或者在页面生命周期函数中被执行的。可以认为事件触发请求接口,接口返回数据,页面缓存接口返回数据。考虑到复用性于是数据源用一个数组描述,详见图4,其中apis为图3中apis字段。考虑到id的易读性,apiId开头使用ap描述。

图4

数据:数据是一个页面中各个组件绑定的数据以及其他缓存数据,页面层级的数据具有共享。便于理解与定位数据,飞码将弹框与页面级别的数据分离开、数据源数据与页面数据也分离开。页面的数据结构设计如图5,图6所示,图5是数据结构,图6是编辑态页面配置样式。

图5图6

事件:当我们点击一个按钮,或者页面生命周期函数触发,或者我们点击一个组件等会触发一个事件。事件可理解为代码中的方法,方法可以调用其他方法,方法具有方法名,也会有入参与返回值。飞码设计出事件id,通过寻址方式满足各种调用情况。其数据结构如图7所示。

图7

在图7中,可以看到事件eventId开头是ev,这样便于与api,弹框区分。页面中的所有事件放在events.children数组中。

弹框:有时候会遇到较复杂弹框,弹框也可以触发另外一个弹框,弹框消失的时候会触发一个事件等等。在一个页面中可以有多个弹框,弹框的显示与消失具有复杂性。为了便于区分弹框与页面之间的关系,单独对弹框进行字段分离,其数据结构详见图8,图9为编辑态情况下配置样式。便于理解与问题定位dialogId开头是为tk。

图8图9

五:小结

本小节分析了飞码背景以及设计LowCode或NoCode平台需要至少解决2个大能力点以及对应16个细化点。通过对16个细化点分析,结合部门情况与vue数据结构设计出来飞码DSL,并对字段含义进行解释。下一小节飞码LowCode前端技术(二)如何便捷配置出页面-1,分析飞码数据源、组件、模板方面的设计。

作者:京东科技 王光辉

来源:京东云开发者社区 转载请注明来源

飞码LowCode前端技术系列(一):数据结构设计的更多相关文章

  1. 大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app

    大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWx ...

  2. AJAX的学习与使用>前端技术系列

    目录 AJAX的学习与使用 什么是AJAX 为什么要使用AJAX AJAX接收服务器响应数据的3种格式 文本格式(重要) JSON格式(重要) 服务器端响应实体类JSON格式的3种方式 修改实体类的t ...

  3. 浅谈字节码增强技术系列2-Asm与Cglib

    作者:董子龙 前言 记得那是2022年秋天的第一场雨,比2021年来的稍晚一些,在那个秋雨朦胧的下午,正在工位上奋笔疾书的我突然听到了前面波哥对着手机听筒说出来的"温柔"的话语:说 ...

  4. 换晶振导致stm32串口数据飞码的解决办法

    一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗? 根据试验结果,很可能会飞码.比如说用串口助手发送的是0x35,但是在串 ...

  5. 图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize)

    图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize) 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步 ...

  6. vue 快速入门 系列 —— 侦测数据的变化 - [vue 源码分析]

    其他章节请看: vue 快速入门 系列 侦测数据的变化 - [vue 源码分析] 本文将 vue 中与数据侦测相关的源码摘了出来,配合上文(侦测数据的变化 - [基本实现]) 一起来分析一下 vue ...

  7. 前端安全系列(一):如何防止XSS攻击?

    原文:https://my.oschina.net/meituantech/blog/2218539 前端安全 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全 ...

  8. 前端安全系列之二:如何防止CSRF攻击

    原文:https://my.oschina.net/meituantech/blog/2243958 背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题 ...

  9. 前端安全系列之二:如何防止CSRF攻击?

    背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网络劫持 ...

  10. 前端安全系列:如何防止CSRF攻击?

    背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网络劫持 ...

随机推荐

  1. Spring Boot 日志文件

    Spring Boot 日志文件 日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 事件日志记录系统的执行中 ...

  2. CF103B Cthulhu题解

    CF103B Cthulhu 点击查看题目 点击查看思路 如果 \(n < m\),那么会形成多个环. 如果 \(n > m\),那么不会形成环. 只有 \(n = m\) 时会形成环, ...

  3. 开发自己的Prometheus Exporter、实现自定义指标

    Prometheus Exporter基础知识 Prometheus Exporter的概念.工作原理  Prometheus Exporter是一个用来收集和暴露指标数据的工具,通过与Prometh ...

  4. 解决php中通过exec调用python脚本报ModuleNotFoundError错误

    背景 出于某些原因,我们有时会在PHP中通过exec来调用Python代码,有可能是某些功能只能用Python实现(或用Python实现比较方便),有可能是出于性能考虑(Python可以执行耗时任务) ...

  5. 带你掌握利用Terraform不同数据源扩展应用场景

    本文分享自华为云社区<利用Terraform不同数据源扩展应用场景>,作者: kaliarch . 一 背景 在生产环境中使用Terraform进行基础设施编排,通常又一些信息是通过其他外 ...

  6. OlllyDbg调试器和IDA调试器

    OllyDbg调试器 OllyDbg称为Ring3级的首选工具.可以识别数千个被和Windows频繁使用的函数,并能将其注释出来.它会自动分析函数过程.循环语句等 OllyDbg主界面 快捷键 Add ...

  7. GSAP 基础

    GreenSock Animation Platform (GSAP) 是一个业界知名的动画库,它被1100多万个网站使用,有超过50%的获奖的网站都是用了它.不管是在原生环境中,还是任意的框架中,你 ...

  8. 2021-8-2 Mysql个人练习题

    创建学生表 CREATE TABLE student( id int, uname VARCHAR(20), chinese FLOAT, english FLOAT, math FLOAT ); I ...

  9. [shell]在curl测试的data参数中引用变量

    在curl测试的data参数中引用变量 前言 在使用curl接口进行接口传参时,常会使用如下方法: #!/bin/bash url="http://192.168.0.10:8000/api ...

  10. wineqq中接收文件的查看与移动

    在Ubuntu等linux系统中安装QQ都需要安装wine支持,而在使用时,会遇到qq接收到的文件无法直接进行操作等问题. 这时,我们发现直接对文件进行复制后,无法在Ubuntu目录中进行粘贴. 其实 ...