2016年Qcon大会首日,阿里巴巴资深总监、淘宝移动平台、阿里百川负责人庄卓然宣布移动端高性能动态化方案Weex即时内测,并将于6月开源。此消息一出,群情汹涌,在座的程序猿、攻城狮们纷纷拿起手机扫码,以期第一时间感觉Weex的神奇之力。前端
在次日的主题分享会上,阿里巴巴前端开发专家赵锦江和技术专家徐凯对Weex进行了深刻的解析。如下为演讲速记整理后的成文。后端
目前的移动开发者面临的最大痛点就是面对极其复杂的环境,对此,庄卓然给出一个公式,移动开发的复杂度=应用数量×平台数量×要适配的各类各样的机型。服务器
如何解决这个问题呢?在解决问题以前,首先要对移动开发的将来有着精准的研判。数据结构
阿里认为,移动开发的将来一定更加平衡,也就是说必须是性能与动态兼得,如此,才可以知足将来用户的需求。另外,移动开发在将来也一定是开放互联的状态,移动互联网未来确定是基于更加大众化的技术体系,没有平台之间的隔阂,并且简单易用。编辑器
因此,阿里结合移动开发的现状并围绕其愿景推出了Weex解决方案。工具
事实上,在去年的双11活动中,Weex就获得了实战的验证,且表现不俗。时至今日,Weex已经被阿里技术团队屡次运用,并“创造”出各类丰富的场景,总体的表现很是优异。组件化
把移动端全部界面拆分红各个page,而后中间设置有路由的控制逻辑,同时,将移动端各类各样的能力经过各类API提供给开发者。这是阿里对移动开发模型的理解。布局
Weex经过标准化的东西,包括HTML、CSS和JS这些前端很是快速易用好学的语法做为开发体验,提供给开发者。另外,Weex的语法设计尊重还Web的标准。性能
Weex设计之初就考虑到在三端(iOS、安卓和H5)上可以获得展示。在最上面的DSL,阿里通常称之为Weex文件(.we),经过Transformer转换成js-bundle,再部署到服务器,这样服务端就完成了。在客户端,第一层是JS-Framework,最后到RenderRengine。测试
输入是Virtual DOM输出是native或者H5 view,还原成内存中的树型数据结构,再建立view,把事件绑定在view上,把view基本属性设上去。Weex Render会分三个线程,不一样的线程负责不一样的事情,让JS线程优先保障流畅性。
Weex的性能、扩展性以及可用性究竟怎样呢?
性能方面,阿里对Weex作了屡次压测。在加载时间、帧率、内存消耗、CPU占用(包括静默和峰值)等多个方面,Weex都表现得很是出色。
在谈及性能之时,帧率和加载时间几乎都会被说起,可是每每忽略了一个事实,那就是Native UI开发中一般没有JS资源在服务器端加载。Weex会把JS内置到客户端里,以避免除下载的问题,从而更为有效地提高性能。
兼容性是Weex很是重视的问题,对此,阿里是这样来解决的。
首先是单测保证,包括JS和H5的单测,保证最基础的UT(Unit Test)自己所带来的含义。
其次是UI的自动化,分为两个部分,一是截图对比,将最终产生的结果和意料中的结果进行图形对比;二是Layout Results,包括Model以及其余的布局类的,经过基本的信息完成测试的过程。
在扩展性方面,Weex能够写不少页面,并且经过路由机制帮助开发者将页面进行串联。
Weex已开放内测,可用性方面正在逐步完善。包括Playground、调试工具、脚手架、AppHub、编辑器等多个方面,一些工做已经完成就绪,绝大部分工做将在五、6月份完成。
目前支持单页使用或整个App使用Weex开发(还不完善,须要开发Router和生命周期管理),这是主推的模式,能够类比RN。
把Weex看成一个iOS/Android组件来使用,类比ImageView。这类需求遍及手淘主链路,如首页、主搜结果、交易组件化等,这类Native页面主体已经很稳定,可是局部动态化需求旺盛致使频繁发版,解决这类问题也是Weex的重点。
在H5种使用Weex,类比WVC。一些较复杂或特殊的H5页面短时间内没法彻底转为Weex全页模式(或RN),好比互动类页面、一些复杂频道页等。这个痛点的解决办法是:在现有的H5页面上作微调,引入Native解决长列表内存暴增、滚动不流畅、动画/手势体验差等问题。
另外,WVC将会融入到Weex中,成为Weex的H5 Components模式。
阿里百川(baichuan.taobao.com)是阿里巴巴集团“云”+“端”的核心战略是阿里巴巴集团无线开放平台,基于世界级的后端服务和成熟的商业组件,经过“技术、商业及大数据”的开放,为移动创业者提供可快速搭建App、商业化APP并提高用户体验的解决方案;同时提供多元化的创业服务-物理空间、孵化运营、创业投资等,为移动创业者提供全面保障。