背景
在频繁上线的 B 端项目中,往往难以通知到用户,这一版本究竟上线了哪一些新功能,因此需要功能引导。
目标
经过新功能引导系统,用户可以清晰的知道上线了哪些新功能,并且会简单使用。
设计
分类
日志类(版本号,版本更新日志等。不在此篇文章涉及范围之类)- 入口类
- 组件级别:Tag 引导,Popover 引导
页面级别:旧页面跳转引导(独立做,视为页面生命周期功能)
步骤类
- 步骤引导(可以视为:有顺序的 Popover 引导)
配置
应该通过配置文件的方式来实现,方便维护(新增,修改,删除)。 ```typescript type GuideConfig = { // 当前引导的 key guideKey: string // 引导类型 type: ‘tag’ | ‘popover’ | ‘steps’ | ‘step’ // 被引导的组件的 key componentKey?: string // tag 配置 tagContent?: string tagColor?: string // popover 配置 popoverContent?: string // steps 配置 steps?: Array<{ // 单一步骤的组件 key componentKey: string // 单一步骤的内容 stepContent: string }>
// 过期时间 expireTime: string // 过期版本 expireVersion: string // 点击过期 expireClick: boolean } ```
过期机制
要考虑 3 种过期机制:
- 步骤引导(可以视为:有顺序的 Popover 引导)
时间过期:超过某个时间后过期。
- 版本过期:超过某个版本后过期。
- 点击过期:用户点击后过期(目前只考虑点击 1 次)。
回看机制
用户往往有这样的一个操作习惯:看到引导后一直点击下一步,并为仔细看引导内容。所以要提供一种回看机制能让用户重新看一次引导。
删除机制
删除和过期、回看的联系比较紧密。有一些重要的功能引导(例如一个完整工作流的引导)往往需要回看,那么就不应该删除;有一些不重要的、实效性的功能引导(例如一个列表中新增了一个字段)就不太需要回看,一段时间后应该从代码种删除。
跨页机制
在步骤引导中,往往涉及跨页面的操作,所以需要提供跨页的机制,要能保存用户当前的步骤。
实现
Tag 引导
Tag 引导实现起来比较简单,就是在对应的组件旁加一个 Tag 来标识这是一个新功能。常见的地方比如:菜单、按钮、卡片等。
Popover 引导
Popover 引导与 Tag 引导类似,只是在组件上增加一个 Popover。
但要注意的是,Popover 引导由于对页面影响较大,因此增加过期机制,包括:时间过期,版本过期,点击后过期。在下面单独说明。
旧页面跳转引导
这种引导往往适用于开发了新页面代替旧页面,实现起来也很简单,就是在新页面增加一行引导文字即可。
步骤引导
步骤引导相对而言是比较复杂的,要注意处理以下几个点:
- 步骤引导的简单方式是:通过一个 Popover 对某个组件进行说明
- 步骤应该是配置化的,方便维护
- 步骤可以是跨页面的
- 步骤引导需要模拟用户操作(点击,操作)
- 要记录用户是否完成了引导
- 要记录用户当前到了第几步
// 步骤引导配置
type StepGuideConfig = Array<{
// 所在的页面
page: string
// 所在的组件 key
componentKey: string
// 引导信息
guide: string
// 点击下一步的回调
onNext: () => void
}>