最早的App开发只有原生这个概念,Html页面只是用来做一些简单的静态资源展示,但是随着H5的兴盛,大家发现很多功能、逻辑都可用web来实现,然后原生作为容器显示,而且H5展示的页面更炫酷、功能更丰富,在IOS、Andriod中都有很好的支持,这样开发效率更高、成本更低,同时用户体验也不错。目前市场上主流的APP主要分为三种:原生APP、WebAPP(HTML5)和混合APP三种,相对应的开发模式就是:原生开发、H5开发和混合开发,这里分别从三者的特点以及优劣性详细展开,进行对比分析。
三种主流APP
原生APP(NativeAPP)
原生APP就是利用Android、iOS平台官方的开发语言、开发类库、工具进行开发。比如安卓的Java、Eclipse、Android studio,iOS的Swift、Objective-C 和Xcode。原生App在应用性能和交互体验上应该是最好的,该模式通常是由“云服务器数据+APP应用客户端”两部份构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上。用户只能通过App Store和应用商店下载到,每一种移动操作系统都需要独立的开发项目。一般用于开发纯工具类App,无需频繁更新的应用程序,例如微信客户端、一些管理应用。
优点:
- 可访问手机所有功能,拥有手机的各种功能的权限,调用原生设备,比如获取个人信息,摄像头以及重力加速器、GPS等等;
- 功能齐全、运行速度快、性能高、稳定性强,是三种App中用户体验最好的;
- 支持大量图形和动画,运行不卡顿,系统响应速度快,流畅度好;
- 页面布局、功能实现、逻辑步骤都是用代码实现的,与系统的兼容性好,安全性高,闪退的现象少。
- 支持容易发现(在App Store里面)和重新发现(应用图标会一直在手机主页上),用户粘度高;
- 比较快捷地使用设备端提供的接口,处理速度上有优势;
- 官方提供大量的开发工具和人工支持来帮助开发;
- 不需要浏览器直接下载独立的应用在设备上运行,安装之后使用方便;
- 手机用户无法联网时也可以访问APP应用中以前加载好的数据
- 可以通过用户下载应用盈利(但App Store抽取20-30% 的营收)
缺点:
- 开发语言相对web前端学习难度大,原生人员的入门门槛高,Android,iOS都需要独立学习,Android基于Java语言,底层调用Google的 API;iOS基于OC或者Swift语言,底层调用App官方提供的API。
- 开发成本高、项目周期长,需要配备两个专门的开发人员,对应开发Android和IOS两套独立的代码,不能跨平台开发,且支持的设备有限,可移植性差;
- App需要发布到应用市场接受审核,内容根据不同平台的规定受到限制,审核标准严格、周期长,需要具备企业证书。
- 应用安装包大,包含UI元素、数据内容、逻辑框架,占用用户手机内存资源。
- APP应用每次更新、维护,都要涉及到向各个应用商店提交审核,上传发布到应用市场,用户在App Store或者应用市场里进行更新,重新下载安装新的包,必须等下载安装完毕才可以打开使用,用户可以对App进行点评、投诉。
Web版APP(HTML 5)
可以在手机端浏览器里面打开的网站就是Web App,是利用Web技术进行的App开发,本质就是浏览器功能的叠加,用普通Web开发语言开发的,通过浏览器运行。Web技术本身需要浏览器的支持才能进行展示和用户交互,因此主要用到的技术是HTML5、JavaScript、CSS等。适合展示有大段文字、图片排版,且样式比较丰富的页面,很多通过vue和react框架编写的都是WebApp。
优势:
- 开发成本低、周期短,只需要H5前端工程师开发一套代码,就可以同时在Android、IOS、Windows等设备上运行,支持设备范围广,兼容多种设备,可以跨平台开发,开发完成后可以即时上线,市面上有大量的开发框架可以帮助开发人员缩短开发周期和开发难度;
- 由于不用上架应用市场,所以内容没有限制;
- 无需安装App,不会占用用户手机内存,用户直接通过浏览器即可访问。这是它的优点,同时也是它的缺点,用户用完即走,留存率低。
- 维护简单,不需要用户下载安装,只需要浏览器的解析,通过浏览器可以直接访问;
- 开发者更新仅需要通过服务器更新即可,用户能够直接使用最新版本号(自己主动更新,不需用户手动更新),对用户来说是感觉不到更新操作的,实现了无痕更新(需要注意一下浏览器缓存的问题)。
缺点:
对网络依赖性强,一旦没有网络就无法进行任何操作,耗费流量,网速慢的时候影响访问速度;
由于Web技术本身的限制,可以使用的功能有限,并不能直接访问手机的所有功能,很多权限受到限制,比如摄像头麦克风、、GPS,重力加速器、离线存储等,所以在体验和性能上有很大的局限性;
App运行速度慢,页面不能承载太多东西,切换的时候流畅性较差;
和原生App相比,性能和用户体验都大打折扣,图片和动画支持性不高,稳定性不强;
如果用户使用更多的新型浏览器,那么就会出现运行问题;
因为不通过App store下载,所以无法通过下载盈利。
混合APP(HybridAPP)
混合App是原生应用和Web应用的结合体,在开发的时候,不仅利用了原生APP的开发技术还应用了HTML5开发技术,所以必须在部分在设备上执行、部分在Web上执行,二者混合比例不限。通俗点来说,这就是网页的模式,通常由“HTML5云网站+APP应用客户端”两部份构成。
混合开发是一种取长补短的开发模式,原生代码部分利用Web View插件或者其它框架为H5提供容器(Android中是webview,iOS7以下有UIWebview,7以上有WKWebview),嵌套Html 5 页面。程序主要的业务实现、界面展示都是利用与H5相关的Web技术进行实现的。
优点:
- 开发效率高、周期短,一套代码可以兼容Android、IOS、普通webkit浏览器设备,可以跨平台开发,可复用性非常高;
- 可以在App Store下载,部分内容可离线运行;
- 可以访问手机的功能要比Web版App更多,但是依然比不上原生的App;
- 代码更新和维护比较方便,版本升级的时候只需在服务端升级即可,不需要上传App Store审核;
缺点:
- 用户体验不如本地原生App应用;
- 加载速度慢,网络要求高;
- 技术还不是很成熟,安全性较差。
总结
分析完了以上三种开发模式,它们各有利弊,那么在实际开发中,我们到底应该如何选择?具体还是需要看团队的产品需求,综合项目预算,上线时间,产品功能等几个方面来考虑。
假如预算充足,性能要求高,开发周期长,可以考虑用户体验比较好的原生App。
假如产品需要短时间内上线,兼容所有平台,不追求用户体验和性能,没有离线访问的需求,可以选择Web App。
追求性能、体验,同时追求开发效率,有部分功能需要调用摄影头、麦克风、GPS定位等手机原生功能,则推荐使用混合App。
混合App综合了两种App的优点,但是目前在性能上依旧有所欠缺,并不是说混合App就是最好解决方案。根据实际需要来做选择是正确的做法,适合的才是最好的,当然如果条件允许的话,原生加Web两种版本一起开发更好。