目前移动应用有三种主流的架构方式,原生应用(native)、混合应用(hybrid)、web 应用。
原生应用
原生应用(Native App)是某一个移动平台(比如 iOS 或 Android)所特有的,无法跨平台使用,开发时需要使用相应平台支持的开发工具和语言:
平台 | 语言 | 开发工具 |
---|---|---|
iOS | Objective-C、Swift | Xcode |
Android | Java | Eclipse、Android studio |
原生应用程序由于直接通过该平台支持的语言进行开发,因此外观体验更好、运行的性能也是最佳的。
绝大部分日常使用的 App 都是原生应用,比如京东、淘宝、爱奇艺和各种游戏。
Web应用
Web 应用本质上是为移动浏览器设计的基于Web的应用,它们是用普通 Web 开发语言开发的,也就是我们常说的HTML5
(HTML 语言第五个版本,加入了大量适应移动应用的新特性)。
目前大部分的 PC 端网页也都是采用 HTML5 开发。另外有些响应式的前端模板,如:BootStrap
,可以实现同一份代码快速、有效适配手机、平板、PC 设备。
Web 应用通过各类设备上的浏览器访问,不需要任何安装的操作。同时,也由于是通过浏览器访问,因此web应用对手机硬件设备的功能支持并不好。
混合应用
众所周知,目前流行的移动平台有 iOS、Android。iOS 与 Android 占的市场份额都很大,因此一般公司在开发 App 的时候,都会考虑同时兼顾 iOS 与 Android。如果用原生应用的方式开发,那么必然就需要开发两套系统,而且由于不同的开发语言,因此可能需要两个团队同时开发和维护两套系统,这会大大增加开发维护成本。为了解决这种问题,混合应用的开发模式就应运而生。
混合应用(Hybrid App),是由原生应用与web应用结合进行开发,采用了原生应用的一部分和web应用的一部分,也就是我们常说的在原生的外壳内嵌入了 HTML5 代码。
一般常见的框架,原生外壳相当于一个浏览器(也类似一个浏览器),通过这个外壳访问 HTML5 。另外,对于手机硬件设备功能(如:GPS、摄像头等)的访问就需要通过原生外壳来实现。
用原生部分的外壳来实现对系统 API 的调用,用 HTML5 来实现业务代码。
对于混合应用程序,由于 Web 代码的存在,外观、用户体验与运行效率都比原生的应用要差。
混合应用的比例很自由,可以根据情况需要调整原生和web应用的比例。
一般测试时,不容易分辨一个应用是 原生应用 还是 混合应用。需要通过工具查看,比较多典型的像 百度阅读 就是混合应用。
还有一种特殊的应用,就是现在流行的小程序,不管是微信小程序还是支付宝小程序,本质上都是在一个 web 框架中实现 H5 页面,也就是混合应用。
为何要了解这三种应用呢,因为如果做 App 自动化就需要对不同的应用进行不同的处理。其中混合应用的测试是比较麻烦的。