目
录
1.背景
2.传统开发
3.开发提效方案
4.低代码平台(积木系统)
5.未来规划
6.作者介绍
背景
都有明确主题,与节日或实时热点相结合
时效性较强,必须按预定时间点上线,上线时间不超过两周
大型活动涉及多端多业务,流程线比较长
裂变能力强,足够吸引人
主题多样,UI设计变化多
与实时热点结合的活动页面,开发上线足够快,这就限制了只能是H5页面
大型活动整体流程需依赖其他部门业务,多部门协作关系要全面考虑
玩法多样,需要各种小游戏引流


传统开发
2.1 开发流程

比如18年底那次活动,为了能更好的协同开发、联调及测试,大约十五六人的团队集中在一个大的会议室中封闭,从开发到上线差不多一个半个月的时间,而且临近上线阶段经常需要加班解决bug。
2.2 存在问题
流程问题
传统开发模式的流水线型开发流程,在单页面项目或流程节点单人负责时具有很好的优势,可以保证流程按顺序无缝衔接,但对于多页面项目或流程节点多人负责时,就有明显的问题开发联调问题
由于运营活动并非联系项目,中间可能会间隔两三个月才会进行下次大的活动,而且大部分开发测试人员都是按业务来划分的,这就导致不同业务无法复用代码埋点问题
同页面要发送多种类型埋点的问题比较复杂。无论是开发,还是测试,都会在埋点上耗费特别多的时间。由于安居客平台并入业务时已经有自己完善的埋点体系,为了便于不同端的流量统计,同一活动页在不同端投放需要发送各自平台内的埋点。多端问题
18年房产部门的运营活动还主要是58端进行运营,包括58M端和58APP,随着业务的扩展,到了19年运营活动投放又新增了安居客APP及M端,这就导致同样的事件在不同端需做多种兼容处理。

开发提效方案
从2020年开始,我们的团队人员快速增长,使我们有精力可以思考之前项目中存在的问题,并开始着手解决。这个阶段我们在运营活动之后也做了大量工作,为运营活动的开发提效赋能。主要通过以下几种方案。
3.1 流程优化

3.2 统一埋点方案
针对运营活动中的多端埋点问题,我收集了前端组不同项目的埋点需求,整理了单类型埋点发送流程的八个步骤:

要提升多类型埋点发送过程的开发效率,首先要从前端开发人员的步骤入手:
-
首先要解决对于平台及环境的自动识别问题,同时需要一个埋点分发层根据环境及配置动态加载对应类型埋点SDK文件; -
其次要解决埋点与业务耦合严重,埋点难维护的问题,需要将埋点配置及业务埋点数据与业务代码分离开; -
想要保持业务代码的整洁以及开发人员的学习成本,还需要对不同类型埋点的初始化和发送方法进行统一; -
另外要解决埋点测试耗时问题与测试环境埋点正确性验证问题,还需要一个线上页面,可以根据埋点配置文件自动生成。
埋点解耦。
将埋点文件与业务解耦,不仅能提升埋点可维护性,还方便统一埋点格式埋点插件
封装平台判断方法,并根据配置灵活引入相应sdk,提供统一发送方法埋点数据测试
提供埋点测试页,可直接上传埋点配置文件,一键发送测试埋点正确性
3.3 多端差异抹平
提供了34种不同的方法适配不同端的操作
提供了像getQueryParams,getCookie等常用工具类方法
提供了平台及设备的常用判断方法
封装了埋点插件,灵活配置埋点发送
Flib插件的使用有两种方式:npm包或js链接,因此前端所有项目内都可以轻松使用它。
npm i -D /optimus
//或
<script type="text/javascript" src="//j1.58cdn.com.cn/frs/fanglib/optimus/1.0.41/index.js"></script>
目前,Flib插件已被房产部门绝大多数项目引入使用,成为了房产前端不可或缺的基础工具类插件。
3.4 通用能力复用
传统的开发模式中,模版是放在后端的,这导致每次联调时模版有些调整需要前端找后端来改,增加了联调成本。随着技术的发展,node作为模版层放在前端管理成为了更好的开发模式选择。但node作为模版中间层有很多问题需要解决:
登录鉴权
用户信息获取
设备信息获取
日志及埋点监控
低代码系统(积木系统)
房产部门每年还会有很多小的运营专题页,每次都需要单独开发,每个专题页面开发联调测试也需要差不多两周的时间。还有一些纯静态页面需求,仅需要一些图片及文案展示,但也需要开发人员一两天时间去开发上线。

4.1 组件库
独立功能开发,组件间耦合度要低;
组件开发要便捷,因此需要一个组件开发脚手架;
为方便组件配置,需统一提供配置类型;
灵活发布,版本可控;
# 积木cli 安装
npm i @ftoy/ftoy-cli -g
# 积木组件创建
ftoy create
# 本地开发调试
ftoy dev
# 组件build
ftoy build
# 发布测试组件
ftoy release -t
# 发布正式组件
ftoy release




4.2 页面编辑平台
页面配置过程,所见即所得的视图
组件版本控制
测试与线上隔离
一键预览与上线
解决方案
编辑页面使用vue框架,展示区域内容根据页面组件数据data渲染,配置过程变更页面数据data既可直接影响展示区域
组件根据版本加载不同js,组件引入时名称与版本号组合为组件名
测试页面使用独立路由,测试过程不影响线上
保存时已将整体配置保存打包到数据库,动态路由保证页面访问


页面与组件、组件与组件间的通信问题?
由于组件相互独立开发,要想组件之间相互通信,那就需要建立一种事件监听与事件触发的机制,还需要保证所有组件事件监听在事件触发之前。
组件间的嵌套组合问题?
要保证组件间的组合千变万化,必须保证组件直接能够相互嵌套配置。
与UI制定规则,抽离通用设计模块?
假如设计时没有一定规则,那我们样式上就没任何东西可以复用
与后端制定接口规范,保证模块数据接口格式?
要保证组件能够一次开发多次使用,那组件内的数据字段必须保证不会变动
解决通信问题
js本身就提供了事件监听与触发机制,不过需封装不同浏览器的兼容方法
根据每个事件key建立查询表及数据缓存,如监听key时已有缓存数据则直接触发
解决组件间的嵌套问题
建立可嵌套容器组件,其他组件可通过容器组件自由组合
解决UI与接口规范
与UI沟通,将常用房源展示模块、优惠券模块、任务模块、奖品领取等常用模块制定UI规范,保证一些背景及文字的可配置
与后端沟通,为常用模块订单独接口,将大的页面数据解耦,可以节省双方共同的开发及联调时间
未来规划
5.1 丰富组件库
5.2 风火轮接入积木系统
如果UI图可以自动转换为可编辑页面,对活动开发效率将会有很大提升,也可以为运营人员提供更多自主上线能力。风火轮接入积木系统已调研完成,正在开发中。
5.3 增加PC端支持
作者介绍
本文分享自微信公众号 - 58技术(architects_58)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。