带你读《2022技术人的百宝黑皮书》——我在淘宝做弹窗,2022 年初的回顾与展望(5)

简介: 带你读《2022技术人的百宝黑皮书》——我在淘宝做弹窗,2022 年初的回顾与展望(5)

带你读《2022技术人的百宝黑皮书》——我在淘宝做弹窗,2022 年初的回顾与展望(4)https://developer.aliyun.com/article/1340420?groupCode=taobaotech


行为模块的设计

行为模块描述弹窗对用户行为的响应,在数据结构的设计上,站在被响应物体的角度,描述了物体应响应什么,响应的目标以及响应的内容,具体字段设计如下:

 

image.pngimage.pngtype :表示响应事件的类型,如点击(click ),Tab 切换(tabSwitch )等; behavior :表示弹窗的行为类别,经过我们长时间的归纳总结,可将弹窗行为分类为:

image.pnggoto :页面跳转;

image.pngimage.pngimage.pngswitch :弹窗内部状态切换; call :端外环境唤端至端内; request :发送请求;

image.pngclose :关闭弹窗;

image.pngimage.pngdoNothing :什么也不做(默认); show :显示;

image.pnghide ;隐藏;

image.pngtarget :表示弹窗行为对象,会根据 behavior 字段的不同而拥有不同语义,例如当 behavior 为 switch 时, target 表示待切换的状态 ID;

image.pngcontent :表示弹窗行为的内容,例如当 behavior 值为 goto ,target 值为 app ,content 值为 https://ww w.taobao.com 时,表明事件发生时,页面需跳转至端内首页;

 

 

 

通过这样的数据结构设计,我们可以最大限度的清晰表达弹窗的行为,并通过基础字段的扩展和组合,在不改变数据结构的情况下灵活,高效地支持各式各样的新需求。

 

一般而言,弹窗针对用户行为仅会有一次响应。但随着我们对淘宝场景,用户行为感知能力的不断提示,在极少数场景下开始出现需要弹窗响应多个行为的需求。在权衡场景的稀有性和 DSL 的扩展性后,我们针对这种特殊场景开辟了 actions 字段,数据结构如下:

 

 

1

{

 

2

 

actions:[

3

 

{

4

 

"type": "click",

5

 

"content": [

6

 

{

7

 

"id": "1",

8

 

"target": "State_2",

9

 

"behaivior": "switch",

10

 

"content": "",

11

 

"nextActions": ["2"],

12

 

"fallbackActions": []

13

 

},

14

 

{

15

 

"id": "2",

16

 

"target": "",

17

 

"behaivior": "close",

18

 

"content": "",

19

 

"nextActions": [],

20

 

"fallbackActions": [],

21

 

}

22

 

]

23

 

}

24

 

]

25

}

 

 

 

通过调整数据结构,复用 action 字段并同时扩展 nextActionsfallbackActions 字段,我们可以轻松实现一个树状的行为描述,最低成本的实现并行或串行行为的描述

 

 

带你读《2022技术人的百宝黑皮书》——我在淘宝做弹窗,2022 年初的回顾与展望(6)https://developer.aliyun.com/article/1340418?groupCode=taobaotech

 

相关文章
|
存储 关系型数据库 MySQL
深入解析MySQL双写缓冲区
InnoDB是MySQL中一种常用的事务性存储引擎,它具有很多优秀的特性。其中,Doublewrite Buffer是InnoDB的一个重要特性之一
404 0
深入解析MySQL双写缓冲区
|
运维 Devops Java
阿里巴巴DevOps实践指南(十三)| 测试提效
分布式测试为测试速度插上了翅膀,精准测试有效的识别出了测试的范围,增量覆盖率又为测试的不断完备提供了有利的指引,线上覆盖率帮助我们有效的进行应用瘦身。充分利用好这些技术手段进行测试提效,可以让持续交付的过程更加的顺畅
阿里巴巴DevOps实践指南(十三)| 测试提效
|
9月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
292 0
Android常用的room增删改查语句(外部数据库)
|
存储 NoSQL Redis
10)Redis 的管道技术
10)Redis 的管道技术
246 0
|
开发框架 分布式计算 API
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
存储 前端开发 搜索推荐
【数据结构入门精讲 | 第六篇】队列知识点及考研408、企业面试练习
【数据结构入门精讲 | 第六篇】队列知识点及考研408、企业面试练习
811 0
|
数据可视化 算法 Python
Python如何使用Networkx实现复杂的人物关系图?
Python如何使用Networkx实现复杂的人物关系图?
518 0
|
前端开发 小程序 Java
CSS3 选择器、Sass选择器、在小程序中使用的选择器(wxss为例)
CSS3 选择器、Sass选择器、在小程序中使用的选择器
904 0