amfe / article

7.59k stars 1.07k forks source link

双11密令红包的前端技术方案 #20

Open songsiqi opened 8 years ago

songsiqi commented 8 years ago

玩法简介

今年的双11不仅买买买令人兴奋,密令红包也让人欲罢不能、抢到手软。每天,都有新鲜出炉的密令从各种渠道放出,只要打开手机淘宝,在搜索框输入密令就可以抢现金红包啦~

一年一度的红包盛事没有彩蛋怎么行呢?输入秋裤、冰箱、手机膜试试看?哎呀我的手机怎么这样了?

玩法图

咳咳,双11已经结束,我们还是回归具体需求和技术实现本身吧:P

需求整理

如上所述,密令红包主要分为以下两种:

今年的双11是无线主导,我们不能满足于只做手淘中的页面,还要在更多的地方把这个玩法落地:

设计一套技术方案来满足这样的需求,并在短时间内快速实现,还是蛮有挑战的。待解决的问题主要有两个: 跨终端适配玩法接入

跨终端适配

这个玩法几乎所有的页面都需要适配Phone、Pad和PC。使用响应式开发,一套页面适配所有端曾经是我们的梦想,但是也得回归现实。不管是从设计方面,还是技术实现方面,密令红包的PC版本都与Phone版本存在着较大的差异,针对PC和Phone做两套页面的实现是无法避免的。

对于Phone页面,我们使用寒冬 @wintercn 大大亲自设计的手机淘宝可伸缩布局方案lib.flexible。为了在工程上解决rem值转换的问题, @songsiqi 开发了px2rem工具集gulp插件webpack loaderpostcss插件一应俱全。

PC版本是需要以模块方式提供给首页、搜索结果等页面,页面兼容旧版本IE,使用KISSY。

而对于Pad页面,之前的实践和积累都是比较缺乏的。

结合淘宝Pad、天猫Pad页面的具体情形,和密令红包本身的需求,考虑到实现的成本,最终的解决方案是: Pad页面在PC页面模块的基础上适配而来,做一些额外的样式和功能定制 。Pad页面和PC页面的不同之处在于,接入方是自己的页面,而非外部页面。

同一模块适配PC和Pad页面

玩法接入

整个密令玩法都是基于 搜索框 来玩的。对于不同的终端,接入的方式也不同。

Phone、Pad:使用poplayer接入

Poplayer是淘宝/天猫APP的一个native组件,可以在当前native页面上覆盖一层h5页面,当poplayer页面背景为透明或半透明时,可配置用户是否能够点透至被覆盖页面。Poplayer的出现,融合了native与h5,我们得以利用h5页面快速开发、快速迭代的优势,对下方已有的native页面的交互功能进行增强。主要应用场景如下:

Phone、Pad接入

PC:提供KISSY模块接入外部页面

PC上的密令玩法会接入淘宝/天猫/海淘的首页、搜索结果等页面。与Phone和Pad不同的是,这次我们暴露给外部页面的是KISSY模块,而非页面。KISSY模块的依赖关系如下图所示:

PC接入模块依赖图

接入密令红包玩法相关模块之后的搜索过程如下图所示:

PC接入中转逻辑

最终效果展示

以C2C红包为例:

就这样, 搜索被我们玩坏了!!!

这些玩法和一个个对应的技术点,拆开来看似乎不是很特别,但是作为整套解决方案,把一路的探索过程和踩过的坑梳理清楚并沉淀下来,还是很有意义的。

qingying commented 8 years ago

工具小能手

kujian commented 8 years ago

插件和适配方案很不错。mark

w91 commented 8 years ago

这个流程图不错,用的什么软件?

songsiqi commented 8 years ago

@naiyiwang Gliffy

w91 commented 8 years ago

@songsiqi 多谢~

robinli08 commented 8 years ago

很全面

ghost commented 8 years ago

mark

liuxusheng2006 commented 8 years ago

学习了。。good work