Hybrid App
概念
是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”
特点
开发效率高、跨平台、低层本的特点,Hybrid从业务开发上讲,没有版本问题,对于BUG能及时修复。但Hybrid也是有缺点的,Hybrid体验比不上Native,同样的功能在性能上存在巨大差距
Web界面上JS对HTML Node的操作需要消耗大量的CPU资源,手机CPU的性能还不能与PC相提并论,就算在智能手机之间,硬件水准也参差不齐,一个可以在iPhone 6上流畅运行的界面,跑到三星上很可能就卡住不动了。所以我们经常可以发现一些富交互页面上的操作无法达到令人满意的流畅度,而流畅度也正是用户评价一款App优劣的最直观因素。所以混合式编程比较适用于需要快速试错、快速占领市场的团队,当然,也不是绝对
对比
1170656-2d23bdaa9e7a426a.png分类
- 多View混合型
即Native View和Web View独立展示,交替出现。这种应用混合逻辑相对简单。即在需要的时候,将WebView当成一个独立的View(Activity)运行起来,在WebView内完成相关的展示操作。这种移动应用主体通常是Native App,Web技术只是起到补充作用。开发难度和Native App基本相当 - 单View混合型
即在同一个View内,同时包括Native View和Web View。互相之间是覆盖(层叠)的关系。这种Hybrid App的开发成本较高,开发难度较大,但是体验较好。如百度搜索为代表的单View混合型移动应用,既可以实现充分的灵活性,又能实现较好的用户体验 - Web主体型
即移动应用的主体是Web View,主要以网页语言编写,穿插Native功能的Hybrid App开发类型。这种类型开发的移动应用体验相对而言存在缺陷,但整体开发难度大幅降低,并且基本可以实现跨平台。Web主体型的移动应用用户体验的好坏,主要取决于底层中间件的交互与跨平台的能力。 - 多主体共存型(灵活型)
是一种新型的开发模式,即支持Web主体型的应用,又支持以Native主体的应用,也支持两者混合的开发模式。比如kerkee框架 ,它具有跨平台、用户体验好、性能高、扩展性好、灵活性强、易维护、规范化、具有Debug环境、彻底解决跨域问题等特点。用户体验与Native App媲美。功能方面,开发者可随意扩展接口。
Hybrid与Native的关系
在Hybrid架构设计中Native提供的是一宿主环境,实现合理的逻辑架构需要考虑:交互设计,资源访问,Hybrid开发调试,通讯设计、并发设计、异常处理、日志监控以及安全模块等问题,前端要做的事情就是封装Native提供的各种能力
Hybrid的交互是通过Native调用前端页面的JS方法,或者前端页面通过JS调用Native提供的接口实现的,两者交互的桥梁是Webview,iOS可以使用javascripbrige来实现(现成框架),在UIWebView的shouldStartLoadWithRequest方法里面捕获url的变化,解析出需要的参数,然后传给一个统一的处理方法。app自身可以自定义url schema,并且把自定义的url注册在调度中心。JS与Native通信可以创建这类URL被Native捕获处理,即schema跳转逻辑。APP安装后会在手机上注册一个schema,比如淘宝是taobao://,Native会有一个进程监控Webview发出的所有schema://请求,然后分发到“控制器”。hybridapi处理程序,Native控制器处理时会需要param提供的参数(encode过),根据实际需要处理业务逻辑问题