Weex黑科技——提升用户体验实践

在2017年1月12日 Weex Conf 2017上,来自阿里的寒泉结合Weex的背景、动画和手势的技术分析,从Weex存在的实际问题入手,提出了新的构想和新方案expression binding。Weex总体来说性能较好,能够解决很多问题,具有协同多个业务在同一个大型APP上的能力,本文主要介绍怎么样通过Weex提升用户体验。

背景

基于某个业务,产品经理和设计师想实现一个页面,该页面是卡片型的List,既能像List一样水平方向滑动,又能在垂直方向获取类似详情页的功能,这种需求在web时代比较难实现。但是有了Weex之后,这个设计变得相对容易了。

技术分析

我们首先需要把效果拆成我们所能够认识的特性。实际上,效果是非常复杂的,是同时几个动画在一起变。我们可以看到,在横滑过程中,最显眼的是卡片的变化,卡片随着手指的拖动产生了大小的变化,并且产生了位移,映射到CSS属性上即利用到了transform里面的scale和translate两个属性。背景是一张做了高斯模糊的图片,当切换卡片的时候有一个图片的变化,随着手指的拖动实际上是两张图片透明度的变化,一个增加一个减小,总和为100%,用到了CSS的opacity属性。界面上有一个细节,标题文字也发生了变化,位置和透明度都发生了变化,即用到了CSS中的opacity和translate属性。同理,向上推的动画是通过scale和translate实现的。

经过上述分析,我们可以得出一个结论:看似复杂的效果,我们都可以通过手势和动画两个特性来解决。

Weex动画

动画的代码比较简单,Weex提供了一个API,有weex-module/animation这一特性,其调用与CSS的transition类似,API的名字也叫animation.transition。具体的写法是,首先需要style样式,从性能考虑,一次可以指定多个属性,上例中指定了color、transform、transformOrigin三个属性,duration为0ms,timingFunction为ease,delay为0ms,最后还有一个回调。

Weex手势

Weex支持4种手势:长按press,单机tap,拖拽pan,轻划swipe。比如拖拽效果,我们只要把两个Weex里的data绑定在元素的top和left上,监听它的onPanStart和onPanMove事件,根据屏幕上的位移改变对应的x和y的值。实际上只是把其计算的差量累加到原始值上面,这样就形成了拖拽的效果。

问题

在实际的应用过程中,发现拖拽效果做demo的时候比较顺利,但实际业务上需要拖拽的东西相当复杂而且几个动画同时播放,上述的几种手势在ios上的性能可以接受,在某些安卓机型上会出现卡顿。下面进行分析,事件触发的原理首先从native侧接收到gesture事件,通过JS和native的bridge将其调给JS,JS找到相应的gesture handler执行JS代码,执行完之后更新到了虚拟DOM上,通过VDOM的compare算法到达real element上。上述过程会在每一次的手指移动的触发过程中执行一遍,频率非常高。

构想

基于上述问题,提出了新的构想:在JS侧创建一个expression,把属性更新的规则(到底要更新哪个属性?每个属性怎么更新?)建立好,然后到native侧去监听gesture,并且更新到real element上,等到这个过程结束(手松开之后)再将其更新回VDOM Sync上。这与之前的做法是完全相反的过程。为了在一些环节上追求高性能、灵活性,有上述两种处理方法。为此,我们设计了新的方案。

新方案——expression binding

上图是最初设计的一个API,在onPanGestureStart的时候,create一个binding,将元素、属性以及最终的表达式传递进去。具体实践的时候也遇到了瓶颈,比如表达式的解析。最终选定的技术方案平衡了开发成本和最终性能。

比如有一个表达式x+y*2,经过JS的Parser解析成标准表达式树,根据四则运算的优先级,y*2先算然后与x相加,从叶子节点往根节点一直解析执行就能算出最后的结果。在gesture start后,JS会将这棵树构造好变成Json传递给native,经过native侧的interpreter按照上述流程执行树,native通过gesture把x和y变量取出,传递给interpreter,表达式就会获得最终结果。通过上面的方式,极大地增强了在手势的情况下操作DOM的效率。

时间: 2024-11-02 12:35:35

Weex黑科技——提升用户体验实践的相关文章

提升用户体验:不可不知的心理学原理

提升用户体验的基础是用户研究,而用户研究不是简单对于用户需求的白描.要真正做好这项工作. 用户体验一词在国际上更为通行的叫法是UX(User eXperience),以用户至上的观点作为基石,由品牌印象(感官冲击).功能性.可用性和内容等多个元素构成,相互依存且不可分割,共同形成了基本的用户体验.本质上来说,体验并不能被设计,能被设计的只能是功能.流程与用户界面.在http://www.aliyun.com/zixun/aggregation/6579.html">用户使用的过程中,感受到

百度不做手机,只是将云平台成果以手机ROM的形式植入终端以提升用户体验

百度移动云事业部副总经理岳国峰在接受TechWeb访问时表示,百度不做手机,只是将云平台成果以手机ROM的形式植入终端以提升用户体验,未来百度推出的手机可能是10款,也可能上百款.此外,11月底百度或将推出类似Siri的语音搜索工具. 岳国峰表示,百度在过去一年半已经没有再提OS的概念,百度现在做的是基于安卓的百度云智能终端平台.百度做终端的目的是用百度云这样一个智能终端平台,来实现百度服务跟终端的更紧密结合,来提升用户在终端上使用百度服务的体验. "百度愿意跟所有有意向和百度合作的手机厂商来合

Facebook将打击垃圾广告信息,提升用户体验

Facebook将打击 垃圾广告信息,提升用户体验凤凰科技讯,北京时间11月15日消息,据科技博客TechCrunch报道,Facebook周五表示,从明年1月份开始,Facebook将对用户News,Feed信息流中垃圾广告信息进行全面清理,限制用户在News,Feed中使用积极的营销词汇.Facebook在对50万名用户展开调查后发现,用户希望看到含有更少促销.广告内容的发帖,而且使用户 感到烦恼的不是广告, 而是潜在他们点赞页面上的发帖, 于是Facebook决定改变这一现状.Facebo

中电信部署100M宽带:超高网速提升用户体验

本报记者 廖鸿翔 "每秒100M,那么下载一部8G的蓝光高清电影就只要80秒,也就是说2分钟不到就能下载高清资源."电影爱好者小陈扳着手指想象他通过网络下载电影的"宏图大业".自中国电信宣布将部署100M宽带以来,不少用户都开始想象一种难以企及的极速体验. 电信宽带将大提速 在3G无线宽带到来的时候,传统宽带还能有什么优势?中国电信给出的明确答案是:前所未有的带宽.伴随着"3G大运动"的风风火火,一场宽带提速的计划也在同时展开. 本月,中国电信于

移动VR将成市场主流 中科创达助力提升用户体验

2016年被誉为VR元年,资本涌入.设备和技术在不断创新,产业也在不断地完善,由VR创造的世界已经从未来科技开始走进我们的真实生活. 而这一趋势也在刚刚结束的2016 MWCS(2016世界移动大会-上海)上得到体现.在展会上,VR无疑成为移动互联网产业各大厂商展示的重点,运营商.终端厂商.移动互联网应用提供商等均在自家展台上展示了VR相关设备.技术.应用. 而来自Gartner报告也证明了VR市场的火热将会一直持续.据Gartner预计,2018年底VR设备销量将达2500万台,到2020年,

巧用过场动画提升用户体验

  (Adrian Zumbrunnen著 Judithzhu & Lynnwang 译) 一些网页优于其他网页,不仅仅是因为它们的内容.可用程度.设计或是特色等等.现代网页间根本的区别在于它们交互及动画细节.我们将分享一些从各种模型中获得的经验,同时分析为何这些简单的样式能够如此好用. 当我们设计数码产品时,我们常常使用诸如Photoshop及Sketch这样的设计软件.大多数从事此行业多年的人显然知道设计不仅仅是视觉呈现.然而,很多人依然继续创造静止的设计.Steve Jobs曾说了这样关于

提升用户体验原来还可以这么简单

为什么在看站长们的经验分享(当然也包括自己写的文章)时,本来是很享受的过程,却不知为何有时候会累.但是在看华尔街日报的时候,一种突然的感觉让我恍然大悟,大家请看图,如果同意请顶一下! 第一张是和信写过的有关网络优化推广的文章排版结构,一个部分一个段落,而且不分隔: 下面看第一张来自华尔街日报的截图,这样的排版时他们通用的,段落多而简洁: 请问作为一位阅读者,上面两张图那张会更让你更愿意阅读下去的? 第一张是段落结构分布也很规律,但是在中间的内容上却让阅读者不得不一个个字的盯着,否则它可能在阅读到

JavaScript框架提升用户体验(UE)

提升用户体验(UE) 到目前为止,这篇文章完全集中于使用JavaScript框架的好处,以及如何更容易的构建交互式应用程序.但是,另一方面,各个框架都有各自诱人的前景,包括用户界面(UI)组件和用户体验(UE)增强,这需要花大量的精力. 这章将分别探讨下面框架的用户体验:Prototype. jQuery.YUI.ExtJS和MooTools. Prototype Prototype是少数几个不包括现成的UI组件或用户体验提升.相反,它顺从所有姊妹库script.aculo.us (Script

网站优化提升用户体验刻不容缓

在大多数人看来,"用户体验"这四个字是经常挂在嘴边的,但这简简单单四个字,却蕴含有不同的深意.我们都知道网站要提升用户体验才利于网站的健康发展,可究竟什么才是真正的用户体验,我想可能没有多少人真正去理解过.用户体验,顾名思义,首先应该深入到用户群中去的,百度百科对用户体验的解释是:一种纯主观的在用户使用一个产品(服务)的过程中建立起来的心理感受.这句话不难理解,但真正归结到实际操作中,可能就没那么容易了.那么,网站优化该如何提升用户体验呢,下面潘成博客为大家简单分析一下!   一:良好