App中3种开发方式:原生、混合和H5异同

原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发。比如android是利用java、eclipse、Android studio,IOS是利用Objective-C 和Xcode进行开发。原生应用由于利用的是官方提供的语言和工具并且能够直接操控硬件设备(比如多点触控、NFC、读取短信等),在应用性能上和交互体验上应该是最好的,但是原生应用的可移植性比较差,特别是一款原生的App,Android和IOS都要各自开发,同样的逻辑、界面要写两套。

原生app之所以称之为原生是因为他在开发时是由移动设备厂商自身提供的SDK或建议的开发方式来进行开发的;通常有android和ios两类开发方式,他们分别是基于Java语言和C++语言的,因此使用原生开发每一类app所需要的语言也不太一样。

优点:
1:原生app因为采用的是由各移动厂商提供的SDK,是基于特定的移动设备的操作系统所设计出来的,因此它的针对性强,与用户的交互体验非常好,性能很稳定;
2:更加贴近底层,因此他的操作更加的流畅;
3:相比较于混合应用,他在转场时的效果更加出色,不会出现各种白屏等现象,这也就会增加客户的留存率;
4:在应用中涉及到调取手机的相机等硬件设备,这些操作都是web APP实现不了的;
5:网络上,webapp一旦断网就无法访问,但是在原生app中即使断网也可以访问原来下载好的数据;
缺点:
1:同一个项目,针对不同的手机操作系统都要进行独立的开发,比如android和ios,同一种软件,要为不同的操作系统开发两个针对性项目。这就造成了开发成本的急剧上升,因此有一个段子就调侃道:“有钱有流量有资源,做App;穷逼做H5-_-”。
2:测试的时候也是非常麻烦,每一次修改都需要重新测试一次,而且上架时需要等待官方审核通过。
3:成本高,更新缓慢,这些成为了原生app逐渐被替代的主要原因。
(但是就算在混合开发中,很多框架都达不到原生的效果,单论性能来讲,原生是最佳的)

HTML5应用开发,是利用Web技术进行的App开发,我们知道web技术本身需要浏览器的支持才能进行展示和用户交互。主要用到的技术是HTML5、JavaScript、CSS等。现在还有一些开发框架可以利用,比如phoneGap、bootstrap、jquery等。H5开发的好处是可以跨平台,编写的代码可以同时在Android、IOS、Windows上进行运行。由于Web技术本身的限制,H5移动应用不能直接访问设备硬件和离线存储,所以在体验和性能上有很大的局限性

H5开发时使用html,css,JavaScript开发的一个展示型应用,主要用于浏览器中进行点击后展示一些信息,他不能够调用手机底层的设备,比如说:手机版的小米官网,手机版的苹果官网。
具体的表现是在手机浏览器中会有一些应用的小图标,这些小图标在点击后,在浏览器中加载页面和你下载的app后打开页面是相同的,而这些小图标代表的就是web app。

优点:
1:方便测试,只需要输入网址就可以进行测试;
2:想要新增功能直接在后台添加即可,不需要通知用户升级;
3:量级低,开发成本很低,而且相应的他也不需要安装包;
4:是基于浏览器的,可以跨平台使用;
缺点:
1:断网就歇菜;
2:功能单一,用于展示,无法调用底层功能,比如相机;
3:与原生应用相对,他的交互体验很差;

混合应用开发正是结合原生和H5开发的技术,取长补短的一种开发模式,原生代码部分利用WebView插件或者其它的框架为H5提供了一个容器,程序主要的业务实现、界面展示是利用H5相关的Web技术进行实现的。比如现在的京东、淘宝、今日头条等都是利用的混合开发模式。

混合开发的优缺点:

优点是:

1、开发效率高,节约时间同一套代码Android和IOS基本都可用

2、更新和部署比较方便,不需要每次升级都要上传到App Store进行审核了,只需要在服务器端升级就可以

3、代码维护方便、版本更新快,降低产品成本

缺点是:

1、由于不能直接操控硬件有些方面性能不是很好

2、另外有技术比较新版本的兼容性比较差,还有就是即懂原生开发又懂H5开发的高端人才难找。

混合App开发是未来的趋势,目前混合开发中使用的技术也很多,主要的混合开发技术有jQuery Mobile、React Native、Cordova、APICloud、AppCan等。虽然混合开发能够提高效率节省成本,但也有很多的限制,除了硬件、缓存等的限制,各大平台之间的兼容性也不足。有的也比较消耗资源

三种开发模式基本功能的对比(因平台版本、应用情况不同经供参考)

原文地址:https://www.cnblogs.com/jcxfighting/p/11727858.html