一、 APP分类
1. native App(原生应用)
概念:原生 App 是专门为特定手机平台开发的应用程序 ,无法在其他平台运行;原生 App 使用与手机操作系统相同的语言。iOS 的原生 App 使用 Objective-C 语言或 Swift 语言,安卓使用 Java 语言或 Kotlin 语言
优点:
(1)由于跟底层系统的语言和技术模型一致,所以有较好的性能和体验;
(2)可以使用系统的所有硬件和软件 API,比如 GPS、摄像头、麦克风、加速计、通知推送等等,能充分发挥系统的潜力。
缺点:
(1)原生 App 的缺点主要是成本,每个手机平台都要建立一个独立的开发团队;安卓有用安卓原生API开发,IOS用IOS原生开发
(2)原生 App 使用底层操作系统的语言,都是很重的编译型语言,开发和调试成本相对较高,时间周期长
(3)原生 App 必须下载安装才能使用,只要升级版本,就必须重新下载安装
2. Web App(web应用)
概念:Web App 是使用网页做的应用程序,必须在浏览器中使用( 比如你在浏览器中收发邮件,就是在使用 Web App)
优点:
(1)不需要下载安装,打开浏览器就能使用,而且总是使用最新版本;
(2)对于开发者来说,Web App 写起来比较快,调试容易,不需要应用商店的批准就能发布。
缺点:
(1)浏览器提供的 API(即 Web API)很有限(目前只有相机、GPS、电池等少数几个),大部分系统硬件都不能通过网页访问,也无法直接读取硬盘文件,所以 Web App 无法充分利用平台的硬件。
(2)网页通过浏览器渲染,性能不如原生 App,不适合做性能要求较高的页面
3. hybrid App(混合应用)
概念:原生 App 与 Web App 的结合。它的壳是原生 App,但是里面放的是网页。可以理解成,混合 App 里面隐藏了一个浏览器,用户看到的实际上是这个隐藏浏览器渲染出来的网页
// 部分概念解析
1. 混合 App 的原生外壳称为"容器",内部隐藏的浏览器,通常使用系统提供的网页渲染控件(即 WebView 控件),也可以自己内置一个浏览器内核
2. API Bridge 就是容器在底层接口和网页之间,建立一座桥梁,让双方通信,容器一旦接到网页的请求,就根据请求去调用底层系统的 API,然后再返回结果给网页
3. webView:webview就是手机系统自带的控件,是个网页引擎,可以解析h5网页。
4. H5 这个词,可以理解成就是混合 App 模型,只不过它特指混合 App 的前端部分
优点:
(1)Web 技术是跨平台的,开发者只写一次页面,就能支持多个平台
(2)灵活性很容易集成多种功能
(3)Web 页面的调试和构建,远比原生控件简单省时。页面的更新也容易,只要在服务器上发布新版本,触发容器内更新就可以了
缺点:
(1)由于存在网页引擎的中间层,所以性能比较欠缺,不仅不如原生 App,而且由于 WebView 不是全功能浏览器,可能比 Web App 都要慢一些
(2)由于页面跨平台,就无法使用只有特定平台提供的功能,导致体验不如纯的原生 App
二、技术栈
1. WebView 控件
讲解具体的技术栈之前,大家需要知道,不管什么技术,最终在 App 里面显示网页,一定需要一个网页引擎,这样才能解析网页。
通常情况下,App 内部会使用 WebView 控件作为网页引擎。这是系统自带的控件,专门用来显示网页。应用程序的界面,只要放上 WebView,就好像内嵌了浏览器窗口,可以显示网页。
不同的 App 技术栈要显示网页,区别仅仅在于怎么处理 WebView 这个原生控件。
- 原生技术栈:需要开发者自己把 WebView 控件放到页面上。
- 混合技术栈:页面本身就是网页,默认在 WebView 中显示。
- 跨平台技术栈:提供一个 WebView 的语法,编译的时候将其换成原生的 WebView。