揭秘vivo低代码平台的提效秘诀
如果无法正常显示,请先停止浏览器的去广告插件。
1. 揭秘vivo
低代码平台的提效秘诀
王宁 | vivo互联网高级前端工程师 陈文洋 | vivo互联网架构师
2. 引言
对用户
图形化操作,容易上手
内置各种模板、组件,降低开发难度
可视化拖拽,开发效率高
后疫情时代
究竟需要什么样的新技术,
才能真正解放 IT 生产力!
低代码!!!
是一种可视化的应用开发方法
用较少的代码、以较快的速度来交付应用程序
对企业
缩短产品周期
节省成本,提高效率
维护便利,即改即用
3. 目录
后羿低代码平台的
提效秘诀
游戏中心低代码
探索与实践
01 前后端分离的低代码方案 01 背景介绍与痛点分析
02 自研高性能渲染引擎 02 如何搭建业务“低代码”平台
03 高效的可视化配置方案 03 成果展示与未来展望
04 千亿级内容投放 05 低代码如何与传统开发共存
4. Chapter 1
5. 平台名称「后羿」
定位
面向用户
支撑运营后台业务
高效高质量落地的
低代码平台
开发者
40+ 1600+ 45+
服务部门 服务用户 产出项目
6. 后羿低代码平台的提效秘诀
前后端分离的低代码方案
1.1
7. 传统WEB开发
前后端分离
前端开发
前后端不分离
后端开发
UI
开始 开始
根据产品原型
设计开发 根据产品
原型设计
API文档
根据API文档
mock接口数据
功能接口开发
VS
开发
根据产品原型
开发业务逻辑
术业专攻、分工明确
分层明确、解除耦合
UI设计稿
整合数据
渲染模板
联调
测试
测试
交付
优势
交付
提升效率、缩短周期
8. 低代码方式开发
前后端不分离
WEB应用
页面、接口、逻辑、数据、鉴权等
产品思维
用户
低代码平台
小程序
各平台应用、接口、逻辑、数据等
应用一体化
适合非专业用户
Native应用
各平台应用、接口、逻辑、数据等
前后端分离
WEB服务 APP应用
BFF XxxSDK
API网关
开发思维
用户
后端
低代码平台
认
证
服
务
权
限
服
务
存储
服
务
应
用
微
服
务
应
用
微
服
务
应用分层
服
务
适合开发者
✔️
后羿
9. 低代码实现方式
前后端不分离
灵活性差
可视化编辑器
存储/CDN
DSL解释器
制品/源码
部署
拓展性差
可集成度较低
DSL/JSONSchema
前后端分离
解除耦合
可视化编辑器
DSL解释器
前端制品/源码
前端部署
灵活性较高
拓展性较好
存储/CDN
DSL解释器
DSL/ JSONSchema
后端制品/源码
前端部署
可集成度较高
对开发友好
✔️
后羿
10. 后羿平台架构
运营平台
WEB
开发者平台
资源解析
路由
DSL转换
自定义组件管理
前
端
FormRender
自定义
组件
列表
表单
自定义
渲染器
上下文
自定义渲染器管理
TableRender
自定义流程节点管理
自定义交互
解释节点
动态交互
渲染引擎
✔️
后羿
BFF
资源发布、迭代
单页面/微应用
版本对比及回溯
APIProxy
监控
日志
前后端低码能力分离
术业专攻、分工明确
业务服务
后
端
服务
存储
平台服务
通用功能服务
开放服务
基础服务 文件服务 SSO/权限 消息通知 人群画像 实验……
监控 调用链 基础监控 日志中心 业务监控 DB监控
Redis集群
MySQL主从集群
MongoDB主从集群
LPR磁盘缓存
分层明确、解除耦合
11. 后羿的分与合
通过可视化平台抹平用户群体认知和实现差异
开发者平台
DSL
WEB服务
运行时
单页
微应用
DSL
后端服务
BFF
接口
功能服务
一体化低码用户
一体化
低码应用
形
态
①
一体化低码用户
具备低码分离实现的优势
前端
页面 交互
接口
形
后端低代码
态
服务、逻辑、存储
②
逻辑
符合不同用户群体的认知
存储 监控
后端
满足不同用户群体的需求
灵活性较高
拓展性较好
接口服务用户
可集成度较高
对开发者友好
形
前端低代码
态
页面、交互、逻辑
③
前端页面用户
12. 其他的一些利好
01
02
BFF层做接口代理、
鉴权、日志
接口微服务化
功能、组件懒加载,
03
提升性能
与传统开发兼容 04
各施所长
独立部署更灵活、高效 05
更易被第三方 06
应用集成
13. 后羿低代码平台的提效秘诀
自研高性能渲染引擎
1.2
14. 渲染引擎的作用
DSL
自定义
组件
列表
表单
自定义
渲染器
上下文
自定义交互
解释节点
渲染
动态表单
动态交互
渲染引擎
page/template
渲染列表
(或图表等)
贮藏执行
动态交互
15. 表单渲染器:FormRender
JSONSchema
自定义组件
功能
• 表单数据管理 • 自定义组件解析渲染
• 实现组件联动 • 表单校验
innerState
响
应
式
内
核
【formData、flatten、errFields】
实例方法
validator
特点
基于JSONSchema驱动的分层架构
• 逻辑与 UI 框架解耦
UI桥接
组件库【Antdv、Element等】
• 学习成本极低
• 拓展简单
可挂载到动态交互上下文,
实现与各块级组件的联动
16. 列表渲染器:TableRender
JSONSchema
响
应
式
内
核
自定义渲染器
特点
基于JSONSchema驱动的分层架构
内置常用渲染器
• 逻辑与 UI 框架解耦
• 学习成本极低
内置多种生命周期
实例方法
• 拓展简单
可挂载到动态交互上下文,
实现与各块级组件的联动
组件库【vxe-table】
17. 动态交互
一次有序的交互
动态交互流程建模
点击
按钮
点击
按钮
流程触发源
next
表单弹窗
表单弹窗
校验不通过
触
发
处
理
失
败
消
息
填写表单
执行校验
校验通过
调用接口
执行服务端数据处理
流程节点
校验不通过
触
发
处
理
失
败
消
息
填写表单
执行校验
校验通过
调用接口
执行服务端数据处理
next
流程节点
next
流程节点
next
接口结果
提示
接口结果
提示
流程节点
next
刷新列表 刷新列表
结束 结束
流程节点
动态交互队列
18. 动态交互解释器
伪
代
码
架
构
JSONSchema
交
互
解
释
器
自定义交互节点
内置交互节点
【API、methods、function】
功
能
贮藏动态节点
传递动态上下文
解释执行动态交互
传递动态上下文
动态节点队列执行器
19. 后羿低代码平台的提效秘诀
高效的可视化配置方案
1.3
20. 资源管理
V消息
V消息
热更新
专注资源
(菜单)编排
单资源版本管理
及批量发布
V消息工单
版本审批
发布、迭代安全
高效可追溯
热更新
21. 模板、代码片段
• 专注页面复用
• 提高配置效率
• 专注组件、功能复用
• 提高配置效率
22. 系统功能
一键开启 可视化配置
多种类型客服信息
水印 文字
菜单搜索 链接
消息通知 二维码
V消息调起
23. 页面、组件拖拽配置
拖拽生成
实时预览
24. 动态交互流程可视化配置
交互逻辑可视化
25. 贴心的功能
接口:支持代理,方便调试
接口配置:统一管理、选择复用
26. 贴心的功能
大纲:
快速定位到组件
版本比对:
支持选择任意两个版本对比
版本回退:
支持多步撤销及恢复指定版本
27. 贴心的功能
右键功能
• 组件、流程节点快速复制
• 组件、流程节点快速粘贴(可跨
组件、页面)
• 精确定位组件Schema
• Schema与可视化实时同步
• 代码片段快速保存、使用
28. 贴心的功能
自定义组件
支持编辑器协议
享受内置组件同等可视化配置能力
29. 贴心的功能
嵌套场景: 扁平化快速切换
字段级功能说明
组件、节点级
文档指引
30. 后羿低代码平台的提效秘诀
千亿级内容投放
1.4
31. 数据流程
业务
数据
统一数据处理
• 通用接口、通用处理组件(无代码)
• 基于JAR包动态加载的自定义处理能力(低代码)
• MongoDB通用化存储(非关系型数据)
统一存储
• MongoDB可配置路由策略(分仓存储)
• MySQL业务数据定义、分发策略管理(版本号、DMP)
精确分发
32. 高可用
用户
Dubbo、HTTP
服务
实例1
本地缓存
磁盘缓存
服务隔离
服务
实例2
本地缓存
磁盘缓存
Redis集群(根据量级调整)
数据源(MongoDB)
实例1
本地缓存
磁盘缓存
Redis集群
磁盘灾备
独立缓存
同城双活
33. 高并发
MongoDB数据源
无上级缓存
Redis缓存
异步处理
无上级缓存
单元查询
并行
本地缓存
数据选择
并发查询
数据处理
批量查询
(异步)
结束
单元映射/分组
数据组合
单元查询
本地缓存
异步加载
ZK监听
数据更新
数据选择
数据处理
高速缓存
水平拓展(服务、实例)
34. 后羿低代码平台的提效秘诀
低代码如何与传统开发共存
1.5
35. 为什么需要共存
灵活
无场景限制
成本低
传统开发 & 低代码开发
技术成熟
周期短
效率高
优势互补才能发挥更大的价值
36. 后羿是怎么做的
架构上兼容传统开发
• 双向支持 iframe
• 双向支持微应用
• 页面、区块、组件级支持
iframe 和微应用
37. 后羿是怎么做的
素材托管
快速部署能力
• 多种工程脚手架
• 脚本命令一键发布
即使传统开发也要快人一步
38. 低代码不是万能的
才是万能的
39. Chapter 2
如何“拼”出一个页面
40. 游戏中心低代码探索与实践
2.1
41. vivo游戏简介
产品形态
vivo游戏中心 vivo游戏内置悬浮窗
定位:vivo游戏用户内容服务平台 定位:vivo游戏中心再单游戏内的延伸触点
定位
vivo用户玩游戏的平台
帮助用户找游戏玩 帮助用户玩好游戏 帮助用户找人玩游戏
找到想要的游戏 找到游戏相关攻略、玩法、福利、特权 游戏玩家社交互动
价值点
42. 首页结构介绍
banner和导航栏
游戏列表和穿插构成
43. 首页存在的问题
行业流量见顶,分发提升困难,需要探索新方向,而应对新需
求的时候研发周期过长,运营效果低于预期。
用户的核心关注点不同,现有产品形态无法对用户带来强烈的
下载刺激。
不同生命周期节点的运营需求重点不一样,现有固化的产品无
法满足需求
运营需要在某个节点更换二级落地页或者响应开发者诉求,搭
建专区的时候,现有功能无法快速支持
44. 首页存在的问题
缺少灵活多样,动态调整组件的能力。
缺少可视化,快速搭建页面的能力。
45. 解决问题的方案
低代码平台下的组件化
46. 游戏中心低代码探索与实践
如何搭建业务“低代码”平台
2.2
47. 组件化设计
01 针对产品进行功能分析,设计出组件
02 组件多样化选择将产品定制化
48. 游戏中心组件化
01 针对游戏中心进行功能分析,
设计出一系列功能模块(业务组件)
02 通过组件(业务组件)组合构成不同的页面,
以满足用户的需求
49. 如何打造标准组件
组件一
组件二
组件三
组件四
组件五
50. 如何打造标准组件
元组件:
游戏 icon卡片排列,游戏行数和个数可配置,
左上配置标题,右上配置跳转
数据:
游 戏列表
组件
元组件:
尺寸为984*345的图片容器
数据:
单个游戏(游戏详情页)
元组件
数据
51. 如何打造标准组件
52. 如何打造标准组件
53. 如何打造标准组件
54. 如何引入数据
数据
HTTP
DUBBO
数据类型:运营配置数据与系统自动数据
数据来源:内部数据与外部数据
协议
55. 如何引入数据
运营场景确定
选择元组件
确定数据类型
确定调用接口
56. 如何引入数据
更换了图片
57. 如何引入数据
调用方式
Dubbo泛化调用。服务消
费者应用不再需要引入服
务提供者的SDK二方包。
表达式语言
• 弱类型脚本语言
• 逻辑控制
• 防腐设计
58. 如何组装页面
可视化快速搭建
59. 如何组装页面
方案:所见之页面集合
方案
页面:推荐、吃鸡、超休闲
组件:专题组件
元组件:
1*4icon卡片
数据:
专题+ 时间+ dmp
组件2
页面1 页面2
组件N 专题组件
数据
元组件
专题
时间
dmp
60. 如何组装页面
元组件
数据
策略
元
组
件
静
态
配
置
系
统
自
动
运
营
配
置
底层数据
活
动
图片
内
容
专
题
视频
游
戏
文字
组
件
2
组
件
3
页面2
(dmp)
页面3
(dmp)
方案2
(多层实验
框架)
方案3
(多层实验
框架)
61. 游戏中心低代码探索与实践
2.3
62. 效果展示
研发流程轻量
客户端
开发人员 服务端
开发人员 运营
人员
开发/更新新组件 上传新的元组件 配置业务组件
上传差分包 配置元组件信息 配置页面
点检生效 配置组件应用场景 点检审核
服务器下发新组件 配置场景管理数据
调用方式/调用源 上线
63. 效果展示
研发效率提升
客户端 动态化组件无需预定义组件,全量上线周期缩短15天以上,且有较高的容错性
服务端 流程标准化,服务端无需开发或者少量开发,开发效率提升4倍甚至更多
测试端 无需回归版本问题,测试效率提升 30% - 50%;
运营端 界面化操作,学习成本降低30%,配置效率提升 10%,能够及时响应诉求
64. 效果展示
项目周期变化
现有组件满足
需求场景下
运营直接配置生效,无需开发,无项目周期
修改组件场景下 客户端修改组件,上传差分包,测试后,运营配置后生效,项目周期为原来的1/5以下
新增组件 客户端修改组件,上传差分包,服务端少量逻辑开发或者不开发,测试后,运营配置后
生效,项目周期为原来的 1/4 以下,服务端和客户端可以并行
65. Pad适配
Before
66. Pad适配
After
67. 解放生产力,提升用户体验
做最好用的安卓低代码平台
68. 低代码概念最近很火,争议也很大,有人认为以后“人人都是程序员”,
也有很多人认为是新品装旧酒,但作为技术人,最重要的还是通过技术解决业务问题,
驱动业务发展,无论是后羿系统,还是游戏中心低代码实践,
都旨在提高开发效率,帮助业务取得更好的结果。
未来,我们也会投入更多的精力,不断优化系统,
能够为用户带来惊喜,能够为行业带来革新
69.