谈一谈移动开发的几种模式

随着移动设备的普及和移动互联网的发展,基于移动设备的开发已经成为主流趋势。由于其屏幕较小,设备便携,同时支持很多传感器等特有功能,外加越来越快的网速,基于移动设备的应用程序开发越来越热门,各种新技术也层出不穷。在此对移动开发曾经出现过的主流的技术做一下梳理,并根据个人对其了解情况做一个简单的对比。

Native App

Native App即原生应用,即最传统最普通的客户端应用,采用对应于平台的特定编程语言来编写,其中Android系统主要采用的编程语言是Java或kotlin,iOS系统主要使用的编程语言是Objective-C或swift。由于是采用操作系统的原生编程语言,这种方式编写的app可以直接和操作系统交互,运行效率高,并且可以直接调用设备。这就是最原始的移动app开发方式,如果需要适配两个不同的平台就要开发两个app,而且原生API开发效率不高,版本更新,发布等等流程都比较复杂,页面布局也不够灵活。虽然局限性很大,但是仍然是一种重要的移动开发解决方案。

Web App

Web App就是网页应用,它的兴起得益于HTML5技术的发展。HTML5使得移动端的网页体验变得越来越好,由于web浏览器具有的天生的跨平台优势,开发一个适配移动端的网页就可以同时实现Android和iOS的适配,并且,前端页面布局非常灵活,无论是页面展示还是交互设计都很容易。不过这种开发模式的缺点也是很明显的:首先web页面是从网络端请求的,加载时间和效率肯定不高,同时运行在浏览器中的程序无法与操作系统直接交互,对于本地资源无法充分利用。虽然HTML5的某些新特性能够在一定程度上改善这一些列问题,但是仍然存在运行效率和操作系统交互性上的制约,因此,这种方式使用受限很多。要知道Web App的本质就是网页,所以完全使用这种方式开发的场景并不多。

Hybrid App

Hybrid App叫做混合应用,是介于native和web之间的一种解决方案,混合开发,指的就是原生开发和网页开发的混合,它结合了原生开发和网页开发的优势,是一种权衡开发效率和运行效率的一种解决方案。最简单的混合开发就是在原生app中使用webview组件展示网页,在网页中呈现想要的内容。这种模式开发的应用特点是平衡了性能和效率,同时结合了web的布局优势和native的底层优势,是现代很多大型app的首选模式。缺点就是学习成本高,对开发者的综合素质有一定要求。而特别的,混合开发还有几个不同的层次。

原生框架+webview

这是最简单的混合开发,采用原生组件构建软件框架,里面放置webview,在webview里面显示网页内容,这种方式性能瓶颈主要在于网页部分和原生组件的渲染速度差异。同时最好还要理解webview配置,要求开发者对移动端开发和web前端都比较熟悉。另一方面,webview中的内容与操作系统的底层交互不便,有些资源的调用可能必须使用原生组件,受限还是比较多的。

PhoneGap、cordova、mui等

这类东西是一套成型的解决方案,提供了部分开放的与底层交互的api,使得开发者能够更容易的通过前端技术构建移动应用。可以理解为它是对网页更深层次的打包,增强了网页与底层系统的结合性,更好的屏蔽了原生组件的差异性。而最大的问题就是需要学习其内部的特定api,不具有通用性。这种方式的性能比简单的webview好一些,不过总体来看还是比较一般,在要求性能的场景下可能不太合适。

React Native和weex

React Native是Facebook公司推出的以前端框架React.js为基础的一项技术,它不同于传统的webview,而是提供了一种可以直接通过js来调用原生组件的开发环境。类似的,weex是阿里推出的以前端框架vue.js为基础的一套类似的技术。使用这种方式构建的app一方面减少了通过webview交互带来的复杂性和低能性,同时保留了js开发的灵活性。由于需要采用特定的技术,这种方式也需要有一定的相关技术学习成本,性能较好但不如原生应用。

以上是移动端应用开发的几种常见的技术选择,要做好移动开发,要有原生移动开发基础和较强的移动开发能力或前端开发能力,现代的移动开发大多数以混合开发为主,对开发者综合能力要求较高。在实际的开发中,具体的技术选择主要还是取决于业务需求,综合考量各种技术的优缺点,没有最好的技术,只有最合适的技术。

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!