20170219更新
时至今日,Hybrid模式也不是那么的“先进”,“潮流”了,市面上有“React-Native”,“Weex”等新型技术在冲击着它的地位。
但是,在某些领域,Hybrid技术仍然占据着大量的市场。
特别是有一些传统软件公司,他们的业务决定着他们目前更适合这种入门低,能批量开发的Hybrid模式,因此别因为过时
,落后
等标签就将Hybrid模式
弃如敝履。
毕竟,适合的才是最好的。
20161004更新 初稿发布
现在概念上的APP诞生是在Google推出Android,Apple推出iOS后,从这时候开始,就有了App开发工程师这个职位,比如Android工程师,iOS工程师(当然了,一些被历史淘汰的,比如Symbian,win phone就暂不算进来了)
最开始的App开发只有原生开发这个概念,但自从H5广泛流行后,一种效率更高的开发模式Hybrid应运而生,它就是”Hybrid模式”,本文针对这种模式做简单介绍
Html5是在2014年9月份正式发布的,这一次的发布做了一个最大的改变就是-“从以前的XML子集升级成为一个独立集合”,也就是说,HTML5和之前的HTML是有很大区别的,这次自己不再是某门派的弟子传人了,而是成为了开宗立派的祖师爷
子Html5发布开始,就慢慢开始掀起了一股H5狂潮,比如”微信朋友圈小游戏”,”围住神经猫”之类的,但是真正HTML5大火之际,应该算是2015之后了,为什么,首先我们来看下谷歌公布的2015年2月份的Android系统版本分布情况
从上图中我们可以看到Android4.0以上的市场占有率已经接近90%,特别是4.4以上的比重已经超过40%了,也就是说,我们这时候开发就已经几乎可以不考虑4.0以下的系统了,而4.0以上H5的支持是要远远高于4.0以下的。所以这时候就可以使用H5技术了
我们先看下谷歌2016年4月份公布的Android系统占有率 我们可以看到,几乎所有的设备都是4.0以上了,而且4.4以上已经超过70%,特别是5.0以上都已经超过40%了,而Android 4.4以上对H5的支持就已经很不错了,所以我们几乎以及可以肆无忌惮的使用H5了
我们都知道,原生APP开发中有一个webview的组件(Android中是webview,iOS7以下有UIWebview,7以上有WKWebview),这个组件可以加载Html文件。
在Html5没有兴盛之前,加载的Html往往只能用来做一些简单的静态资源显示,但是H5大行其道以后,Html5中有很多新增的功能,炫酷的效果,特别是iOS中H5支持一直都很良好,Android 4.4以上支持也足够,所以这时候发现可以将一些主要的逻辑都用H5页面来编写,然后原生直接用webview加载显示,这样大大提高了开发效率,而且体验也很不错
所谓Hybrid,即混合开发,意味着半原生半Web,其实在H5兴盛之前,Hybrid模式就已经比较成熟了,但是一直不愠不火(因为系统的一些现在以及html本身功能的限制)
但是自从H5兴盛之后,大家发现原来很多功能都可以用web来实现,然后原生作为容器显示,所以为了提高开发效率,越来越多的人使用Hybrid模式进行开发,越来越多的Hybrid开发框架,越来越多的前端专职成为Hybrid开发,也就是说Hybrid也随之兴盛起来了
前面有提到Hybrid这种模式,那么它是怎么样定义的呢?怎么样的开发模式才算是Hybrid模式呢?
上面提到过Hybrid的定义,但实际上,根据Native和web的混合程度,Hybrid也可以再次细分为多种类型(参考百科上的说法)
如下图,痛过JSBridge,H5页面可以调用Native的api,Native也可调用H5页面的方法或者通知H5页面回调
知道了Hybrid的基本原理,那么Hybrid模式内部是如何实现的呢?H5和Native直接的通信又是如何实现的呢?
请参考Hybrid APP基础篇(三)->Hybrid APP之Native和H5页面交互原理
现在的App开发,除了Hybrid,还有Native,纯web,React Native等方案,下面介绍下各种方案的分析对比
参考 Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
比如Facebook推出的React Native方案,这是Facebook在放弃h5后自行推出一个’反H5方案’,一句话总结就是:里面可以用JS来完整的写一个原生应用
比如微信推出的小程序(16年9月份内测),这也是一个微信主导的’反H5方案’,一句话总结就是:里面可以同JS+微信自制的UI方案来写一个类似于原生的应用,只不过这个应用不是发布到App Store中,而是发布到微信中
比如阿里推出的weex。
像以上技术都不断的在冲击着Hybrid模式(当然Native也会有影响),不过都很推崇JS(话说很多前端猿一直希望JS一统天下)
到现在为止(发文时间16年10月),2016年已经快过去了,新的技术也不断的在涌出,各类的新技术都不断的在冲击着Hybrid模式的地位,正如一句话”长江后浪拍前浪,前浪*****“,任何技术都会被时间无情的筛选,请不要奇怪,也许不久后的某天,你会突然发现Hybrid模式已经完全落伍了。
原文在我个人博客上面 Hybrid APP基础篇(一)->什么是Hybrid Ap