“其实要想让WebApp变得很流畅并不难,只要我们关注性能和交互的流畅度,然后提供很简单的HTML API让大家能够迁移过去,就能够让WebApp流畅运行了。”12月21日,在第57期百度技术沙龙上,百度移动云事业部资深研发工程师张袁炜表示。
WebAPP在开发效率上与NativeApp相比有着天然的优势,但是在体验上却有着较大的差距。移动互联网时代如何实现优势互补,将Native能力融入到WebAPP中,是业界一直在探讨的话题。本期百度技术沙龙,加入百度已经6年的资深前端张袁炜为大家带来了主题为《融入原生能力到WebApp》的技术分享,主要讲解了Blend架构对于WebApp的优化问题。
据悉,本期百度技术沙龙是今年的最后一期,作为国内最早的技术交流活动,百度技术沙龙即将迎来自己的第5个年头,如今百度技术沙龙已经被北京甚至全国的技术爱好者视为不可或缺的技术学习家园。
“在做Blend框架中我们会遇到许多问题。对于这些问题,我们的解决方案是降级和增强,这是两个不同的设备或者是要匹配两个不同的目标时,我们采用的方案。”张袁炜说。
Blend开源 用一整套方案使WebApp流畅起来
Blend其实是HybridApp的方案,张袁炜和他的团队之所以要造它,是因为现有的HybridAPP方案在性能上解决不了问题,他们希望能够有一个提高性能,有融合能力的HybridAPP解决方案。
在张袁炜看来,WebApp最大的优势在于迭代速度。移动互联网时代,以WebApp为主角的HTML5开发方案的迭代速度很快,它是随时可以更新的,因为它每次用户访问,如果不走缓存,它就会到服务器上获取最新的数据。而无论是安卓还是iOS的Native App一个发版的周期平均下来大概是十四天,这会严重影响迭代速度。
张袁炜表示:“天下武功唯快不破,大家知道移动互联网时代,一个公司或者一个产品想要成功,有可能它的时间要求是天级别的。如果你一个产品晚上线一天机会就错失了,也就是说我们要尽可能加快迭代速度。”
作为正在做的应用开发框架,Blend不仅仅是一项“拿来即用”的开源技术,更是一种开发理念。使用这个理念,App不仅能保留web灵活性,剔除冗长的版本发布过程,做到极快的迭代速度,还能在交互中保证足够的流畅性。
这样的实现结果说起来容易,可张袁炜团队刚刚开始架构Blend时,着实费了一番功夫。他们首先针对WebApp的性能、能力、易用性三个大方面开始了整套架构方案的研发。在经历了一段时间的摸索之后,张袁炜发现了一套比较合理的架构方案:在Web交互中,用原生的Web实现的时候,非常卡的东西用Native来实现,其他所有的交互和所有的开发都用纯Web语言来降低开发成本。
这是张袁炜和他的团队进行Blend开发时的基本思路,有了思路,那么应该怎么做这个架构?总的来说,Blend会支持三个平台,一个是iOS,一个是安卓,还有一个就是浏览器。
在iOS或者是安卓端,张袁炜和他的团队在上面开发一个Runtime,把原生的能力通过js的封装,把它的接口暴露出来给上面的js或者是页面调用同时,他们也开发了很多JsAPI给开发者使用。“首先是端能力,这个更像应用调起,你要调起微信或者是百度搜索,我们还具有本地文件的能力;第二个是云能力,这里面包括百度的服务,帐号的服务和支付;第三个是UI能力,我们有转场动画等等,还有手势跟随,还会用Native组件。”张袁炜介绍道。
打造原生应用体验 Clouda+为直达号提供“引擎”
“Blend能在能保证用户体验的前提下节省人力成本,又有很高的定制性,迭代速度和web相当,对我们编程开发的帮助很大。”在现场的讨论环节,一位听众表示。
在现场,张袁炜还为听众们列举了不少案例。他介绍,开源的Blend技术糅合了WebApp和NativeApp各自的优势,结合百度强大的云能力,可以为直达号和WebApp开发和部署提供有力支持。
作为Clouda+的重要做成部分,Blend为移动web应用开发提供了整体解决方案,最近火爆网络的百度直达号正是因为有了Clouda+,才能做到用户体验极佳,体验和交互媲美Native应用。
具体来说,Blend是一套JavaScript的API,将Native的端能力和百度的云服务融合(Blend)到WebApp中。
“Blend由BlendUI和BlendAPI两部分组成。主要解决了webapp的两大难题,UI交互不流畅和无法调用设备能力。”张袁炜解释道。
BlendUI让Javascript拥有操作Webview和Native控件的能力,让web移动端交互流畅,体验无异于NativeApp。BlendAPI则让WebApp拥有移动设备的原生能力和百度云服务能力。
WebApp的一大困境在于可供web调用的API远不如Native的完善。比如手机是3G还是wifi网络,电量情况,通讯录读取等,这些局限给手机web开发者带来了功能完备性的障碍。而Blend API弥补了这一鸿沟,它能让webapp的API更完备,让API的性能速度得到提升,暴露给开发者的都是通过统一、标准化的web API。
更为重要的是,Blend API内置于拥有极大装机量的手机百度,使得百度直达号开发者能在数亿用户的手机上直接使用这些本地能力,并且拥有破壳检索、自动升级免安装等优势功能。
在张袁炜老师交流分享的过程中我们发现,现场有不少的在校大学生,他们正在利用Blend做一些直达号相关项目,后生可畏,值得鼓励,也希望越来越多的专业人士积极参与到沙龙中来,为百度技术沙龙营造了良好的学习氛围。
百度技术沙龙是百度每月组织的一项技术开放交流活动,至今已经举办57期。致力于以“技术开放”的心态,分享行业领先的技术理念和技术实践。秉承“畅想、交流、争鸣、聚会”的理念,为互联网工程师、软件开发者提供一个快速学习和不断成长的平台。百度技术沙龙希望能够借助技术分享日后有效推动中国互联网的技术发展与行业创新。